From 78f08353d1894c4601c4dfd706202a16da66ed3c Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Sun, 29 Sep 2019 15:12:49 +0800 Subject: [PATCH 01/25] =?UTF-8?q?2.3=20=E4=BB=A3=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/me/zhengjie/utils/FileUtil.java | 7 ++----- .../me/zhengjie/service/impl/LocalStorageServiceImpl.java | 4 +++- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java index d0d24649..95f6d1dc 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java @@ -5,10 +5,8 @@ import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.poi.excel.BigExcelWriter; import cn.hutool.poi.excel.ExcelUtil; -import cn.hutool.poi.excel.ExcelWriter; import me.zhengjie.exception.BadRequestException; import org.springframework.web.multipart.MultipartFile; - import javax.activation.MimetypesFileTypeMap; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; @@ -233,11 +231,10 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { return "视频"; } else return "其他"; } + public static String getFileTypeByMimeType(String type) { -// URLConnection.guessContentTypeFromName("." + type) -// way 2 new MimetypesFileTypeMap().getContentType("."+ "txt") String mimeType = new MimetypesFileTypeMap().getContentType("." + type); - return mimeType.split("\\/")[0]; + return mimeType.split("\\/")[0]; } public static void checkSize(long maxSize, long size) { if(size > (maxSize * 1024 * 1024)){ diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java index fd917699..f0830b5f 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java @@ -63,7 +63,9 @@ public class LocalStorageServiceImpl implements LocalStorageService { public LocalStorageDTO create(String name, MultipartFile multipartFile) { FileUtil.checkSize(maxSize, multipartFile.getSize()); String suffix = FileUtil.getExtensionName(multipartFile.getOriginalFilename()); - String type = FileUtil.getFileTypeByMimeType(suffix); + // 可自行选择方式 +// String type = FileUtil.getFileTypeByMimeType(suffix); + String type = FileUtil.getFileType(suffix); File file = FileUtil.upload(multipartFile, path + type + File.separator); try { name = StringUtils.isBlank(name) ? FileUtil.getFileNameNoEx(multipartFile.getOriginalFilename()) : name; From f0211db02c35941a244592b7d43ff866174b923a Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Thu, 24 Oct 2019 09:31:57 +0800 Subject: [PATCH 02/25] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/zhengjie/annotation/Query.java | 19 +++--- .../java/me/zhengjie/aspect/LimitAspect.java | 18 +++--- .../exception/EntityExistException.java | 17 ++---- .../exception/EntityNotFoundException.java | 17 ++---- .../zhengjie/exception/handler/ApiError.java | 2 +- .../handler/GlobalExceptionHandler.java | 25 ++------ .../java/me/zhengjie/mapper/EntityMapper.java | 8 --- .../redis/FastJsonRedisSerializer.java | 11 ++-- .../java/me/zhengjie/redis/RedisConfig.java | 26 ++++---- .../zhengjie/redis/StringRedisSerializer.java | 17 +++--- .../me/zhengjie/swagger2/SwaggerConfig.java | 2 +- .../me/zhengjie/utils/ElAdminConstant.java | 2 +- .../java/me/zhengjie/utils/EncryptUtils.java | 29 ++++----- .../main/java/me/zhengjie/utils/FileUtil.java | 54 ++++------------- .../main/java/me/zhengjie/utils/PageUtil.java | 10 +--- .../java/me/zhengjie/utils/QueryHelp.java | 14 ++--- .../java/me/zhengjie/utils/RequestHolder.java | 3 +- .../java/me/zhengjie/utils/SecurityUtils.java | 6 +- .../zhengjie/utils/SpringContextHolder.java | 1 + .../java/me/zhengjie/utils/StringUtils.java | 26 ++------ .../java/me/zhengjie/utils/ThrowableUtil.java | 14 ++--- .../me/zhengjie/utils/TranslatorUtil.java | 17 ++---- .../me/zhengjie/utils/ValidationUtil.java | 5 +- .../src/main/resources/config/application.yml | 2 +- .../EladminSystemApplicationTests.java | 1 + .../java/me/zhengjie/domain/AlipayConfig.java | 40 ++++--------- .../java/me/zhengjie/domain/EmailConfig.java | 16 ++--- .../main/java/me/zhengjie/domain/Picture.java | 3 - .../java/me/zhengjie/domain/QiniuConfig.java | 20 ++----- .../java/me/zhengjie/domain/QiniuContent.java | 24 ++------ .../me/zhengjie/domain/VerificationCode.java | 21 ++----- .../java/me/zhengjie/domain/vo/EmailVo.java | 4 +- .../java/me/zhengjie/domain/vo/TradeVo.java | 32 +++------- .../repository/LocalStorageRepository.java | 2 +- .../repository/PictureRepository.java | 2 +- .../repository/QiNiuConfigRepository.java | 2 +- .../repository/QiniuContentRepository.java | 6 +- .../me/zhengjie/rest/AliPayController.java | 58 +++++++++--------- .../me/zhengjie/rest/EmailController.java | 26 ++++---- .../zhengjie/rest/LocalStorageController.java | 32 +++++----- .../me/zhengjie/rest/PictureController.java | 47 +++++++-------- .../me/zhengjie/rest/QiniuController.java | 59 +++++++------------ .../rest/VerificationCodeController.java | 20 ++++--- .../me/zhengjie/service/AlipayService.java | 22 +++---- .../me/zhengjie/service/EmailService.java | 12 ++-- .../zhengjie/service/LocalStorageService.java | 28 +++++---- .../me/zhengjie/service/PictureService.java | 16 ++--- .../me/zhengjie/service/QiNiuService.java | 31 +++++----- .../service/VerificationCodeService.java | 5 +- .../service/impl/AlipayServiceImpl.java | 39 ++---------- .../service/impl/EmailServiceImpl.java | 29 ++++----- .../service/impl/LocalStorageServiceImpl.java | 19 +++--- .../service/impl/PictureServiceImpl.java | 15 +++-- .../service/impl/QiNiuServiceImpl.java | 29 ++++----- .../impl/VerificationCodeServiceImpl.java | 7 ++- .../me/zhengjie/utils/AliPayStatusEnum.java | 2 - .../java/me/zhengjie/utils/AlipayUtils.java | 17 ++---- .../java/me/zhengjie/utils/QiNiuUtil.java | 22 +++---- 58 files changed, 387 insertions(+), 666 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/annotation/Query.java b/eladmin-common/src/main/java/me/zhengjie/annotation/Query.java index dc394b82..2375c266 100644 --- a/eladmin-common/src/main/java/me/zhengjie/annotation/Query.java +++ b/eladmin-common/src/main/java/me/zhengjie/annotation/Query.java @@ -20,38 +20,35 @@ public @interface Query { /** * 连接查询的属性名,如User类中的dept - * @return */ String joinName() default ""; /** * 默认左连接 - * @return */ Join join() default Join.LEFT; /** * 多字段模糊搜索,仅支持String类型字段,多个用逗号隔开, 如@Query(blurry = "email,username") - * @return */ String blurry() default ""; enum Type { - /** jie 2019/6/4 相等 */ + // jie 2019/6/4 相等 EQUAL - /** Dong ZhaoYang 2017/8/7 大于等于 */ + // Dong ZhaoYang 2017/8/7 大于等于 , GREATER_THAN - /** Dong ZhaoYang 2017/8/7 小于等于 */ + // Dong ZhaoYang 2017/8/7 小于等于 , LESS_THAN - /** Dong ZhaoYang 2017/8/7 中模糊查询 */ + // Dong ZhaoYang 2017/8/7 中模糊查询 , INNER_LIKE - /** Dong ZhaoYang 2017/8/7 左模糊查询 */ + // Dong ZhaoYang 2017/8/7 左模糊查询 , LEFT_LIKE - /** Dong ZhaoYang 2017/8/7 右模糊查询 */ + // Dong ZhaoYang 2017/8/7 右模糊查询 , RIGHT_LIKE - /** Dong ZhaoYang 2017/8/7 小于 */ + // Dong ZhaoYang 2017/8/7 小于 , LESS_THAN_NQ - //** jie 2019/6/4 包含 */ + // jie 2019/6/4 包含 , IN } diff --git a/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java index 555774c7..e4d6fb0d 100644 --- a/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java +++ b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java @@ -12,7 +12,6 @@ import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.script.DefaultRedisScript; import org.springframework.data.redis.core.script.RedisScript; @@ -23,10 +22,13 @@ import java.lang.reflect.Method; @Aspect @Component public class LimitAspect { - @Autowired - private RedisTemplate redisTemplate; + + private final RedisTemplate redisTemplate; private static final Logger logger = LoggerFactory.getLogger(LimitAspect.class); + public LimitAspect(RedisTemplate redisTemplate) { + this.redisTemplate = redisTemplate; + } @Pointcut("@annotation(me.zhengjie.annotation.Limit)") public void pointcut() { @@ -41,12 +43,10 @@ public class LimitAspect { LimitType limitType = limit.limitType(); String key = limit.key(); if (StringUtils.isEmpty(key)) { - switch (limitType) { - case IP: - key = StringUtils.getIP(request); - break; - default: - key = signatureMethod.getName(); + if (limitType == LimitType.IP) { + key = StringUtils.getIP(request); + } else { + key = signatureMethod.getName(); } } diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/EntityExistException.java b/eladmin-common/src/main/java/me/zhengjie/exception/EntityExistException.java index 23417a72..f9aaa553 100644 --- a/eladmin-common/src/main/java/me/zhengjie/exception/EntityExistException.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/EntityExistException.java @@ -1,7 +1,6 @@ package me.zhengjie.exception; import org.springframework.util.StringUtils; - import java.util.HashMap; import java.util.Map; import java.util.stream.IntStream; @@ -12,23 +11,17 @@ import java.util.stream.IntStream; */ public class EntityExistException extends RuntimeException { - public EntityExistException(Class clazz, Object... saveBodyParamsMap) { - super(EntityExistException.generateMessage(clazz.getSimpleName(), toMap(String.class, String.class, saveBodyParamsMap))); + public EntityExistException(Class clazz, String field, String val) { + super(EntityExistException.generateMessage(clazz.getSimpleName(), toMap(field, val))); } - private static String generateMessage(String entity, Map saveBodyParams) { + private static String generateMessage(String entity, Map saveBodyParams) { return StringUtils.capitalize(entity) + " 已存在 " + saveBodyParams; } - private static Map toMap( - Class keyType, Class valueType, Object... entries) { - if (entries.length % 2 == 1) - throw new IllegalArgumentException("Invalid entries"); - return IntStream.range(0, entries.length / 2).map(i -> i * 2) - .collect(HashMap::new, - (m, i) -> m.put(keyType.cast(entries[i]), valueType.cast(entries[i + 1])), - Map::putAll); + private static Map toMap(String... entries) { + return new HashMap(){{ put(entries[0], entries[1]); }}; } } \ No newline at end of file diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/EntityNotFoundException.java b/eladmin-common/src/main/java/me/zhengjie/exception/EntityNotFoundException.java index 31e1cbdf..c7e2db6a 100644 --- a/eladmin-common/src/main/java/me/zhengjie/exception/EntityNotFoundException.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/EntityNotFoundException.java @@ -12,24 +12,17 @@ import java.util.stream.IntStream; */ public class EntityNotFoundException extends RuntimeException { - public EntityNotFoundException(Class clazz, Object... searchParamsMap) { - super(EntityNotFoundException.generateMessage(clazz.getSimpleName(), toMap(String.class, String.class, searchParamsMap))); + public EntityNotFoundException(Class clazz, String field, String val) { + super(EntityNotFoundException.generateMessage(clazz.getSimpleName(), toMap(field, val))); } - private static String generateMessage(String entity, Map searchParams) { + private static String generateMessage(String entity, Map searchParams) { return StringUtils.capitalize(entity) + " 不存在 " + searchParams; } - private static Map toMap( - Class keyType, Class valueType, Object... entries) { - if (entries.length % 2 == 1) - throw new IllegalArgumentException("Invalid entries"); - return IntStream.range(0, entries.length / 2).map(i -> i * 2) - .collect(HashMap::new, - (m, i) -> m.put(keyType.cast(entries[i]), valueType.cast(entries[i + 1])), - Map::putAll); + private static Map toMap(String... entries) { + return new HashMap(){{ put(entries[0], entries[1]); }}; } - } \ No newline at end of file diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java b/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java index db43891e..433104f9 100644 --- a/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java @@ -21,7 +21,7 @@ class ApiError { timestamp = LocalDateTime.now(); } - public ApiError(Integer status,String message) { + ApiError(Integer status, String message) { this(); this.status = status; this.message = message; diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java b/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java index 5e58c784..44467412 100644 --- a/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java @@ -11,6 +11,9 @@ 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 java.util.Objects; + import static org.springframework.http.HttpStatus.*; /** @@ -23,8 +26,6 @@ public class GlobalExceptionHandler { /** * 处理所有不可知的异常 - * @param e - * @return */ @ExceptionHandler(Throwable.class) public ResponseEntity handleException(Throwable e){ @@ -36,8 +37,6 @@ public class GlobalExceptionHandler { /** * 处理 接口无权访问异常AccessDeniedException - * @param e - * @return */ @ExceptionHandler(AccessDeniedException.class) public ResponseEntity handleAccessDeniedException(AccessDeniedException e){ @@ -49,8 +48,6 @@ public class GlobalExceptionHandler { /** * 处理自定义异常 - * @param e - * @return */ @ExceptionHandler(value = BadRequestException.class) public ResponseEntity badRequestException(BadRequestException e) { @@ -62,8 +59,6 @@ public class GlobalExceptionHandler { /** * 处理 EntityExist - * @param e - * @return */ @ExceptionHandler(value = EntityExistException.class) public ResponseEntity entityExistException(EntityExistException e) { @@ -75,8 +70,6 @@ public class GlobalExceptionHandler { /** * 处理 EntityNotFound - * @param e - * @return */ @ExceptionHandler(value = EntityNotFoundException.class) public ResponseEntity entityNotFoundException(EntityNotFoundException e) { @@ -88,26 +81,20 @@ public class GlobalExceptionHandler { /** * 处理所有接口数据验证异常 - * @param e - * @returns */ @ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity handleMethodArgumentNotValidException(MethodArgumentNotValidException e){ // 打印堆栈信息 log.error(ThrowableUtil.getStackTrace(e)); - String[] str = e.getBindingResult().getAllErrors().get(0).getCodes()[1].split("\\."); - StringBuffer msg = new StringBuffer(str[1]+":"); - msg.append(e.getBindingResult().getAllErrors().get(0).getDefaultMessage()); - ApiError apiError = new ApiError(BAD_REQUEST.value(),msg.toString()); + String[] str = Objects.requireNonNull(e.getBindingResult().getAllErrors().get(0).getCodes())[1].split("\\."); + ApiError apiError = new ApiError(BAD_REQUEST.value(), str[1] + ":" + e.getBindingResult().getAllErrors().get(0).getDefaultMessage()); return buildResponseEntity(apiError); } /** * 统一返回 - * @param apiError - * @return */ private ResponseEntity buildResponseEntity(ApiError apiError) { - return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus())); + return new ResponseEntity<>(apiError, HttpStatus.valueOf(apiError.getStatus())); } } diff --git a/eladmin-common/src/main/java/me/zhengjie/mapper/EntityMapper.java b/eladmin-common/src/main/java/me/zhengjie/mapper/EntityMapper.java index 98bc55db..be8696dd 100644 --- a/eladmin-common/src/main/java/me/zhengjie/mapper/EntityMapper.java +++ b/eladmin-common/src/main/java/me/zhengjie/mapper/EntityMapper.java @@ -10,29 +10,21 @@ public interface EntityMapper { /** * DTO转Entity - * @param dto - * @return */ E toEntity(D dto); /** * Entity转DTO - * @param entity - * @return */ D toDto(E entity); /** * DTO集合转Entity集合 - * @param dtoList - * @return */ List toEntity(List dtoList); /** * Entity集合转DTO集合 - * @param entityList - * @return */ List toDto(List entityList); } diff --git a/eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java b/eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java index d2e224c8..23f7e9d7 100644 --- a/eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java +++ b/eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java @@ -4,8 +4,7 @@ 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; +import java.nio.charset.StandardCharsets; /** * Value 序列化 @@ -15,11 +14,9 @@ import java.nio.charset.Charset; */ public class FastJsonRedisSerializer implements RedisSerializer { - public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8"); - private Class clazz; - public FastJsonRedisSerializer(Class clazz) { + FastJsonRedisSerializer(Class clazz) { super(); this.clazz = clazz; } @@ -29,7 +26,7 @@ public class FastJsonRedisSerializer implements RedisSerializer { if (t == null) { return new byte[0]; } - return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET); + return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(StandardCharsets.UTF_8); } @Override @@ -37,7 +34,7 @@ public class FastJsonRedisSerializer implements RedisSerializer { if (bytes == null || bytes.length <= 0) { return null; } - String str = new String(bytes, DEFAULT_CHARSET); + String str = new String(bytes, StandardCharsets.UTF_8); return (T) JSON.parseObject(str, clazz); } diff --git a/eladmin-common/src/main/java/me/zhengjie/redis/RedisConfig.java b/eladmin-common/src/main/java/me/zhengjie/redis/RedisConfig.java index beb0170a..e84e2af3 100644 --- a/eladmin-common/src/main/java/me/zhengjie/redis/RedisConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/redis/RedisConfig.java @@ -28,7 +28,6 @@ import java.time.Duration; @Slf4j @Configuration @EnableCaching -// 自动配置 @ConditionalOnClass(RedisOperations.class) @EnableConfigurationProperties(RedisProperties.class) public class RedisConfig extends CachingConfigurerSupport { @@ -36,7 +35,6 @@ public class RedisConfig extends CachingConfigurerSupport { /** * 设置 redis 数据默认过期时间,默认1天 * 设置@cacheable 序列化方式 - * @return */ @Bean public RedisCacheConfiguration redisCacheConfiguration(){ @@ -55,17 +53,16 @@ public class RedisConfig extends CachingConfigurerSupport { // value值的序列化采用fastJsonRedisSerializer template.setValueSerializer(fastJsonRedisSerializer); template.setHashValueSerializer(fastJsonRedisSerializer); - - // 全局开启AutoType,不建议使用 - // ParserConfig.getGlobalInstance().setAutoTypeSupport(true); + // 全局开启AutoType,这里方便开发,使用全局的方式 + ParserConfig.getGlobalInstance().setAutoTypeSupport(true); // 建议使用这种方式,小范围指定白名单 - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.domain"); - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.system.service.dto"); - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.service.dto"); - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.system.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"); +// ParserConfig.getGlobalInstance().addAccept("me.zhengjie.domain"); +// ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.system.service.dto"); +// ParserConfig.getGlobalInstance().addAccept("me.zhengjie.service.dto"); +// ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.system.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()); @@ -75,8 +72,6 @@ public class RedisConfig extends CachingConfigurerSupport { /** * 自定义缓存key生成策略,默认将使用该策略 - * 使用方法 @Cacheable - * @return */ @Bean @Override @@ -97,7 +92,7 @@ public class RedisConfig extends CachingConfigurerSupport { public CacheErrorHandler errorHandler() { // 异常处理,当Redis发生异常时,打印日志,但是程序正常走 log.info("初始化 -> [{}]", "Redis CacheErrorHandler"); - CacheErrorHandler cacheErrorHandler = new CacheErrorHandler() { + return new CacheErrorHandler() { @Override public void handleCacheGetError(RuntimeException e, Cache cache, Object key) { log.error("Redis occur handleCacheGetError:key -> [{}]", key, e); @@ -118,7 +113,6 @@ public class RedisConfig extends CachingConfigurerSupport { log.error("Redis occur handleCacheClearError:", e); } }; - return cacheErrorHandler; } } diff --git a/eladmin-common/src/main/java/me/zhengjie/redis/StringRedisSerializer.java b/eladmin-common/src/main/java/me/zhengjie/redis/StringRedisSerializer.java index e0f54f10..0419d5cb 100644 --- a/eladmin-common/src/main/java/me/zhengjie/redis/StringRedisSerializer.java +++ b/eladmin-common/src/main/java/me/zhengjie/redis/StringRedisSerializer.java @@ -2,9 +2,10 @@ package me.zhengjie.redis; import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; +import me.zhengjie.utils.StringUtils; import org.springframework.data.redis.serializer.RedisSerializer; - import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; /** * 重写序列化器 @@ -15,15 +16,11 @@ public class StringRedisSerializer implements RedisSerializer { private final Charset charset; - private final String target = "\""; - - private final String replacement = ""; - - public StringRedisSerializer() { - this(Charset.forName("UTF8")); + StringRedisSerializer() { + this(StandardCharsets.UTF_8); } - public StringRedisSerializer(Charset charset) { + private StringRedisSerializer(Charset charset) { Assert.notNull(charset, "Charset must not be null!"); this.charset = charset; } @@ -36,10 +33,10 @@ public class StringRedisSerializer implements RedisSerializer { @Override public byte[] serialize(Object object) { String string = JSON.toJSONString(object); - if (string == null) { + if (StringUtils.isBlank(string)) { return null; } - string = string.replace(target, replacement); + string = string.replace("\"", ""); return string.getBytes(charset); } } \ No newline at end of file diff --git a/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java b/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java index 207873cd..d451bea5 100644 --- a/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java @@ -55,7 +55,7 @@ public class SwaggerConfig { private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("eladmin 接口文档") - .version("2.1") + .version("2.2") .build(); } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/ElAdminConstant.java b/eladmin-common/src/main/java/me/zhengjie/utils/ElAdminConstant.java index 89bfeaae..47199dba 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/ElAdminConstant.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/ElAdminConstant.java @@ -14,7 +14,7 @@ public class ElAdminConstant { /** * 用于IP定位转换 */ - public static final String REGION = "内网IP|内网IP"; + static final String REGION = "内网IP|内网IP"; /** * 常用接口 diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java index 5bddf3a5..a1d49c3f 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java @@ -6,6 +6,7 @@ import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec; +import java.nio.charset.StandardCharsets; /** * 加密 @@ -27,23 +28,23 @@ public class EncryptUtils { return null; } Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); - DESKeySpec desKeySpec = new DESKeySpec(strKey.getBytes("UTF-8")); + DESKeySpec desKeySpec = new DESKeySpec(strKey.getBytes(StandardCharsets.UTF_8)); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey secretKey = keyFactory.generateSecret(desKeySpec); - IvParameterSpec iv = new IvParameterSpec(strParam.getBytes("UTF-8")); + IvParameterSpec iv = new IvParameterSpec(strParam.getBytes(StandardCharsets.UTF_8)); cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv); return byte2hex( - cipher.doFinal(source.getBytes("UTF-8"))).toUpperCase(); + cipher.doFinal(source.getBytes(StandardCharsets.UTF_8))).toUpperCase(); } - public static String byte2hex(byte[] inStr) { + private static String byte2hex(byte[] inStr) { String stmp; - StringBuffer out = new StringBuffer(inStr.length * 2); - for (int n = 0; n < inStr.length; n++) { - stmp = Integer.toHexString(inStr[n] & 0xFF); + StringBuilder out = new StringBuilder(inStr.length * 2); + for (byte b : inStr) { + stmp = Integer.toHexString(b & 0xFF); if (stmp.length() == 1) { // 如果是0至F的单位字符串,则添加0 - out.append("0" + stmp); + out.append("0").append(stmp); } else { out.append(stmp); } @@ -51,8 +52,7 @@ public class EncryptUtils { return out.toString(); } - - public static byte[] hex2byte(byte[] b) { + private static byte[] hex2byte(byte[] b) { if ((b.length % 2) != 0){ throw new IllegalArgumentException("长度不是偶数"); } @@ -66,9 +66,6 @@ public class EncryptUtils { /** * 对称解密 - * @param source - * @return - * @throws Exception */ public static String desDecrypt(String source) throws Exception { if (source == null || source.length() == 0){ @@ -76,10 +73,10 @@ public class EncryptUtils { } byte[] src = hex2byte(source.getBytes()); Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); - DESKeySpec desKeySpec = new DESKeySpec(strKey.getBytes("UTF-8")); + DESKeySpec desKeySpec = new DESKeySpec(strKey.getBytes(StandardCharsets.UTF_8)); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey secretKey = keyFactory.generateSecret(desKeySpec); - IvParameterSpec iv = new IvParameterSpec(strParam.getBytes("UTF-8")); + IvParameterSpec iv = new IvParameterSpec(strParam.getBytes(StandardCharsets.UTF_8)); cipher.init(Cipher.DECRYPT_MODE, secretKey, iv); byte[] retByte = cipher.doFinal(src); return new String(retByte); @@ -87,8 +84,6 @@ public class EncryptUtils { /** * 密码加密 - * @param password - * @return */ public static String encryptPassword(String password){ return DigestUtils.md5DigestAsHex(password.getBytes()); diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java index b6a04ac1..d64475d3 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java @@ -44,8 +44,6 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { /** * MultipartFile转File - * @param multipartFile - * @return */ public static File toFile(MultipartFile multipartFile){ // 获取文件名 @@ -65,21 +63,7 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { } /** - * 删除 - * @param files - */ - public static void deleteFile(File... files) { - for (File file : files) { - if (file.exists()) { - file.delete(); - } - } - } - - /** - * 获取文件扩展名 - * @param filename - * @return + * 获取文件扩展名,不带 . */ public static String getExtensionName(String filename) { if ((filename != null) && (filename.length() > 0)) { @@ -93,8 +77,6 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { /** * Java文件操作 获取不带扩展名的文件名 - * @param filename - * @return */ public static String getFileNameNoEx(String filename) { if ((filename != null) && (filename.length() > 0)) { @@ -108,8 +90,6 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { /** * 文件大小转换 - * @param size - * @return */ public static String getSize(long size){ String resultSize = ""; @@ -130,12 +110,8 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { /** * inputStream 转 File - * @param ins - * @param name - * @return - * @throws Exception */ - public static File inputStreamToFile(InputStream ins, String name) throws Exception{ + static File inputStreamToFile(InputStream ins, String name) throws Exception{ File file = new File(System.getProperty("java.io.tmpdir") + File.separator + name); if (file.exists()) { return file; @@ -153,10 +129,6 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { /** * 将文件名解析成文件的上传路径 - * - * @param file - * @param filePath - * @return 上传到服务器的文件名 */ public static File upload(MultipartFile file, String filePath) { Date date = new Date(); @@ -170,7 +142,7 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { File dest = new File(path); // 检测是否存在目录 if (!dest.getParentFile().exists()) { - dest.getParentFile().mkdirs();// 新建文件夹 + dest.getParentFile().mkdirs(); } String d = dest.getPath(); file.transferTo(dest);// 文件写入 @@ -187,16 +159,12 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { byte[] buffer = new byte[(int)file.length()]; inputFile.read(buffer); inputFile.close(); - base64=new Base64().encode(buffer); - String encoded = base64.replaceAll("[\\s*\t\n\r]", ""); - return encoded; + base64=Base64.encode(buffer); + return base64.replaceAll("[\\s*\t\n\r]", ""); } /** * 导出excel - * @param list - * @return - * @throws Exception */ public static void downloadExcel(List> list, HttpServletResponse response) throws IOException { String tempPath =System.getProperty("java.io.tmpdir") + IdUtil.fastSimpleUUID() + ".xlsx"; @@ -217,24 +185,24 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { } public static String getFileType(String type) { - String documents = "txt doc pdf ppt pps xlsx xls"; + String documents = "txt doc pdf ppt pps xlsx xls docx"; String music = "mp3 wav wma mpa ram ra aac aif m4a"; String video = "avi mpg mpe mpeg asf wmv mov qt rm mp4 flv m4v webm ogv ogg"; String image = "bmp dib pcp dif wmf gif jpg tif eps psd cdr iff tga pcd mpt png jpeg"; - if(image.indexOf(type) != -1){ + if(image.contains(type)){ return "图片"; - } else if(documents.indexOf(type) != -1){ + } else if(documents.contains(type)){ return "文档"; - } else if(music.indexOf(type) != -1){ + } else if(music.contains(type)){ return "音乐"; - } else if(video.indexOf(type) != -1){ + } else if(video.contains(type)){ return "视频"; } else return "其他"; } public static String getFileTypeByMimeType(String type) { String mimeType = new MimetypesFileTypeMap().getContentType("." + type); - return mimeType.split("\\/")[0]; + return mimeType.split("/")[0]; } public static void checkSize(long maxSize, long size) { if(size > (maxSize * 1024 * 1024)){ diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/PageUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/PageUtil.java index 8ca67b0a..a04e0377 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/PageUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/PageUtil.java @@ -12,10 +12,6 @@ public class PageUtil extends cn.hutool.core.util.PageUtil { /** * List 分页 - * @param page - * @param size - * @param list - * @return */ public static List toPage(int page, int size , List list) { int fromIndex = page * size; @@ -32,8 +28,6 @@ public class PageUtil extends cn.hutool.core.util.PageUtil { /** * Page 数据处理,预防redis反序列化报错 - * @param page - * @return */ public static Map toPage(Page page) { Map map = new LinkedHashMap<>(2); @@ -43,9 +37,7 @@ public class PageUtil extends cn.hutool.core.util.PageUtil { } /** - * @param object - * @param totalElements - * @return + * 自定义分页 */ public static Map toPage(Object object, Object totalElements) { Map map = new LinkedHashMap<>(2); diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java b/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java index 0ea14822..c467c47c 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java @@ -15,18 +15,12 @@ import java.util.*; @Slf4j public class QueryHelp { - /** - * @描述 : 转换为Predicate - * @作者 : Dong ZhaoYang - * @日期 : 2017/8/7 - * @时间 : 17:25 - */ @SuppressWarnings("unchecked") public static Predicate getPredicate(Root root, Q query, CriteriaBuilder cb) { List list = new ArrayList<>(); if(query == null){ - return cb.and(list.toArray(new Predicate[list.size()])); + return cb.and(list.toArray(new Predicate[0])); } try { List fields = getAllFields(query.getClass(), new ArrayList<>()); @@ -62,14 +56,14 @@ public class QueryHelp { for (String name : joinNames) { switch (q.join()) { case LEFT: - if(ObjectUtil.isNotEmpty(join)){ + if(ObjectUtil.isNotNull(join)){ join = join.join(name, JoinType.LEFT); } else { join = root.join(name, JoinType.LEFT); } break; case RIGHT: - if(ObjectUtil.isNotEmpty(join)){ + if(ObjectUtil.isNotNull(join)){ join = join.join(name, JoinType.RIGHT); } else { join = root.join(name, JoinType.RIGHT); @@ -137,7 +131,7 @@ public class QueryHelp { return true; } for (int i = 0; i < strLen; i++) { - if (Character.isWhitespace(cs.charAt(i)) == false) { + if (!Character.isWhitespace(cs.charAt(i))) { return false; } } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/RequestHolder.java b/eladmin-common/src/main/java/me/zhengjie/utils/RequestHolder.java index 343b451b..f9458838 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/RequestHolder.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/RequestHolder.java @@ -3,6 +3,7 @@ package me.zhengjie.utils; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; +import java.util.Objects; /** * 获取 HttpServletRequest @@ -12,6 +13,6 @@ import javax.servlet.http.HttpServletRequest; public class RequestHolder { public static HttpServletRequest getHttpServletRequest() { - return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); } } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java index e040c111..1b0fc75f 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java @@ -28,8 +28,7 @@ public class SecurityUtils { */ public static String getUsername(){ Object obj = getUserDetails(); - JSONObject json = new JSONObject(obj); - return json.get("username", String.class); + return new JSONObject(obj).get("username", String.class); } /** @@ -38,7 +37,6 @@ public class SecurityUtils { */ public static Long getUserId(){ Object obj = getUserDetails(); - JSONObject json = new JSONObject(obj); - return json.get("id", Long.class); + return new JSONObject(obj).get("id", Long.class); } } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java b/eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java index e4bfcbbc..7e1af48e 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java @@ -26,6 +26,7 @@ public class SpringContextHolder implements ApplicationContextAware, DisposableB /** * 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型. */ + @SuppressWarnings("unchecked") public static T getBean(String name) { assertContextInjected(); return (T) applicationContext.getBean(name); diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java index fd2647d0..3d6763ed 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java @@ -27,7 +27,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { * @param strs 字符串组 * @return 包含返回true */ - public static boolean inString(String str, String... strs) { + static boolean inString(String str, String... strs) { if (str != null) { for (String s : strs) { if (str.equals(trim(s))) { @@ -92,7 +92,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { * toCapitalizeCamelCase("hello_world") == "HelloWorld" * toUnderScoreCase("helloWorld") = "hello_world" */ - public static String toUnderScoreCase(String s) { + static String toUnderScoreCase(String s) { if (s == null) { return null; } @@ -125,10 +125,8 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { /** * 获取ip地址 - * @param request - * @return */ - public static String getIP(HttpServletRequest request) { + 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"); @@ -145,32 +143,16 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { /** * 根据ip获取详细地址 - * @param ip - * @return */ public static String getCityInfo(String ip) { try { String path = "ip2region/ip2region.db"; String name = "ip2region.db"; - int algorithm = DbSearcher.BTREE_ALGORITHM; DbConfig config = new DbConfig(); File file = FileUtil.inputStreamToFile(new ClassPathResource(path).getStream(), name); DbSearcher searcher = new DbSearcher(config, file.getPath()); Method method = null; - switch (algorithm) { - case DbSearcher.BTREE_ALGORITHM: - method = searcher.getClass().getMethod("btreeSearch", String.class); - break; - case DbSearcher.BINARY_ALGORITHM: - method = searcher.getClass().getMethod("binarySearch", String.class); - break; - case DbSearcher.MEMORY_ALGORITYM: - method = searcher.getClass().getMethod("memorySearch", String.class); - break; - default: - method = searcher.getClass().getMethod("memorySearch", String.class); - break; - } + method = searcher.getClass().getMethod("btreeSearch", String.class); DataBlock dataBlock = null; dataBlock = (DataBlock) method.invoke(searcher, ip); String address = dataBlock.getRegion().replace("0|",""); diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/ThrowableUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/ThrowableUtil.java index 6faa8c61..3c1f3f7a 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/ThrowableUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/ThrowableUtil.java @@ -2,30 +2,23 @@ package me.zhengjie.utils; import me.zhengjie.exception.BadRequestException; import org.hibernate.exception.ConstraintViolationException; - import java.io.PrintWriter; import java.io.StringWriter; /** - * 异常工具 + * 异常工具 2019-01-06 * @author Zheng Jie - * @date 2019-01-06 */ public class ThrowableUtil { /** * 获取堆栈信息 - * @param throwable - * @return */ public static String getStackTrace(Throwable throwable){ StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - try { + try (PrintWriter pw = new PrintWriter(sw)) { throwable.printStackTrace(pw); return sw.toString(); - } finally { - pw.close(); } } @@ -34,9 +27,10 @@ public class ThrowableUtil { while ((t != null) && !(t instanceof ConstraintViolationException)) { t = t.getCause(); } - if (t instanceof ConstraintViolationException) { + if (t != null) { throw new BadRequestException(msg); } + assert false; throw new BadRequestException("删除失败:" + t.getMessage()); } } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/TranslatorUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/TranslatorUtil.java index 1f34b54c..623e90b0 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/TranslatorUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/TranslatorUtil.java @@ -1,8 +1,6 @@ package me.zhengjie.utils; import cn.hutool.json.JSONArray; -import lombok.var; - import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; @@ -26,7 +24,7 @@ public class TranslatorUtil { BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; - StringBuffer response = new StringBuffer(); + StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); @@ -39,14 +37,11 @@ public class TranslatorUtil { } private static String parseResult(String inputJson) throws Exception { - JSONArray jsonArray = new JSONArray(inputJson); - JSONArray jsonArray2 = (JSONArray) jsonArray.get(0); - String result =""; - - for(var i = 0; i < jsonArray2.size(); i ++){ - result += ((JSONArray) jsonArray2.get(i)).get(0).toString(); + JSONArray jsonArray2 = (JSONArray) new JSONArray(inputJson).get(0); + StringBuilder result = new StringBuilder(); + for (Object o : jsonArray2) { + result.append(((JSONArray) o).get(0).toString()); } - return result; + return result.toString(); } - } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java index fa8e7baf..940a1143 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java @@ -12,7 +12,6 @@ public class ValidationUtil{ /** * 验证空 - * @param optional */ public static void isNull(Optional optional, String entity,String parameter , Object value){ if(!optional.isPresent()){ @@ -25,14 +24,12 @@ public class ValidationUtil{ /** * 验证是否为邮箱 - * @param string - * @return */ public static boolean isEmail(String string) { if (string == null){ return false; } - String regEx1 = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"; + String regEx1 = "^([a-z0-9A-Z]+[-|.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"; return string.matches(regEx1); } } diff --git a/eladmin-system/src/main/resources/config/application.yml b/eladmin-system/src/main/resources/config/application.yml index c45c9529..a98b7945 100644 --- a/eladmin-system/src/main/resources/config/application.yml +++ b/eladmin-system/src/main/resources/config/application.yml @@ -22,7 +22,7 @@ spring: redis: #数据库索引 - database: 0 + database: 1 host: 127.0.0.1 port: 6379 password: diff --git a/eladmin-system/src/test/java/me/zhengjie/EladminSystemApplicationTests.java b/eladmin-system/src/test/java/me/zhengjie/EladminSystemApplicationTests.java index c78714a4..3b6df74d 100644 --- a/eladmin-system/src/test/java/me/zhengjie/EladminSystemApplicationTests.java +++ b/eladmin-system/src/test/java/me/zhengjie/EladminSystemApplicationTests.java @@ -11,6 +11,7 @@ public class EladminSystemApplicationTests { @Test public void contextLoads() { + } } diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/AlipayConfig.java b/eladmin-tools/src/main/java/me/zhengjie/domain/AlipayConfig.java index ac3f4861..914adf75 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/AlipayConfig.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/AlipayConfig.java @@ -18,66 +18,46 @@ public class AlipayConfig implements Serializable { @Id private Long id; - /** - * 应用ID,APPID,收款账号既是APPID对应支付宝账号 - */ + // 应用ID,APPID,收款账号既是APPID对应支付宝账号 @NotBlank @Column(name = "app_id") private String appID; - /** - * 商户私钥,您的PKCS8格式RSA2私钥 - */ + // 商户私钥,您的PKCS8格式RSA2私钥 @NotBlank @Column(name = "private_key", columnDefinition = "text") private String privateKey; - /** - * 支付宝公钥 - */ + // 支付宝公钥 @NotBlank @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"; - /** - * 编码,固定格式 - */ + // 编码,固定格式 private String charset= "utf-8"; - /** - * 异步通知地址 - */ + // 异步通知地址 @NotBlank @Column(name = "notify_url") private String notifyUrl; - /** - * 订单完成后返回的页面 - */ + // 订单完成后返回的页面 @NotBlank @Column(name = "return_url") private String returnUrl; - /** - * 类型,固定格式 - */ + // 类型,固定格式 private String format="JSON"; - /** - * 商户号 - */ + // 商户号 @NotBlank @Column(name = "sys_service_provider_id") private String sysServiceProviderId; diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/EmailConfig.java b/eladmin-tools/src/main/java/me/zhengjie/domain/EmailConfig.java index 04157e78..c49131dc 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/EmailConfig.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/EmailConfig.java @@ -19,30 +19,22 @@ public class EmailConfig implements Serializable { @Id private Long id; - /** - *邮件服务器SMTP地址 - */ + // 邮件服务器SMTP地址 @NotBlank private String host; - /** - * 邮件服务器SMTP端口 - */ + // 邮件服务器SMTP端口 @NotBlank private String port; - /** - * 发件者用户名,默认为发件人邮箱前缀 - */ + // 发件者用户名,默认为发件人邮箱前缀 @NotBlank private String user; @NotBlank private String pass; - /** - * 收件人 - */ + // 收件人 @NotBlank @Column(name = "from_user") private String fromUser; diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/Picture.java b/eladmin-tools/src/main/java/me/zhengjie/domain/Picture.java index 8999cd84..289cc08a 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/Picture.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/Picture.java @@ -32,9 +32,6 @@ public class Picture implements Serializable { private String width; - /** - * delete URl - */ @Column(name = "delete_url") private String delete; diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuConfig.java b/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuConfig.java index 0fdd67dc..f4f84858 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuConfig.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuConfig.java @@ -18,23 +18,17 @@ public class QiniuConfig implements Serializable { @Id private Long id; - /** - * 一个账号最多拥有两对密钥(Access/Secret Key) - */ + // 一个账号最多拥有两对密钥(Access/Secret Key) @NotBlank @Column(name = "access_key", columnDefinition = "text") private String accessKey; - /** - * 一个账号最多拥有两对密钥(Access/Secret Key) - */ + // 一个账号最多拥有两对密钥(Access/Secret Key) @NotBlank @Column(name = "secret_key", columnDefinition = "text") private String secretKey; - /** - * 存储空间名称作为唯一的 Bucket 识别符 - */ + // 存储空间名称作为唯一的 Bucket 识别符 @NotBlank private String bucket; @@ -49,14 +43,10 @@ public class QiniuConfig implements Serializable { @NotBlank private String zone; - /** - * 外链域名,可自定义,需在七牛云绑定 - */ + // 外链域名,可自定义,需在七牛云绑定 @NotBlank private String host; - /** - * 空间类型:公开/私有 - */ + // 空间类型:公开/私有 private String type = "公开"; } diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java b/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java index 43784e98..20b1ada5 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java @@ -21,37 +21,25 @@ public class QiniuContent implements Serializable { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - /** - * 文件名,如qiniu.jpg - */ + // 文件名 @Column(name = "name",unique = false) private String key; - /** - * 空间名 - */ + // 空间名 private String bucket; - /** - * 大小 - */ + // 大小 private String size; - /** - * 文件地址 - */ + // 文件地址 private String url; private String suffix; - /** - * 空间类型:公开/私有 - */ + // 空间类型:公开/私有 private String type = "公开"; - /** - * 更新时间 - */ + // 更新时间 @UpdateTimestamp @Column(name = "update_time") private Timestamp updateTime; diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/VerificationCode.java b/eladmin-tools/src/main/java/me/zhengjie/domain/VerificationCode.java index 6fd573a1..c66b9799 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/VerificationCode.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/VerificationCode.java @@ -26,32 +26,21 @@ public class VerificationCode { private String code; - /** - * 使用场景,自己定义 - */ + // 使用场景,自己定义 private String scenes; - /** - * true 为有效,false 为无效,验证时状态+时间+具体的邮箱或者手机号 - */ + // true 为有效,false 为无效,验证时状态+时间+具体的邮箱或者手机号 private Boolean status = true; - - /** - * 类型 :phone 和 email - */ + // 类型 :phone 和 email @NotBlank private String type; - /** - * 具体的phone与email - */ + // 具体的phone与email @NotBlank private String value; - /** - * 创建日期 - */ + // 创建日期 @CreationTimestamp @Column(name = "create_time") private Timestamp createTime; diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/vo/EmailVo.java b/eladmin-tools/src/main/java/me/zhengjie/domain/vo/EmailVo.java index a0767cbb..289aa30d 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/vo/EmailVo.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/vo/EmailVo.java @@ -18,9 +18,7 @@ import java.util.List; @NoArgsConstructor public class EmailVo { - /** - * 收件人,支持多个收件人,用逗号分隔 - */ + // 收件人,支持多个收件人,用逗号分隔 @NotEmpty private List tos; diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/vo/TradeVo.java b/eladmin-tools/src/main/java/me/zhengjie/domain/vo/TradeVo.java index 6927dafe..638ab9b5 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/vo/TradeVo.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/vo/TradeVo.java @@ -15,51 +15,35 @@ import java.sql.Timestamp; @Data public class TradeVo { - /** - * (必填)商品描述 - */ + // (必填)商品描述 @NotBlank private String body; - /** - * (必填)商品名称 - */ + // (必填)商品名称 @NotBlank private String subject; - /** - * (必填)商户订单号,应该由后台生成 - */ + // (必填)商户订单号,应该由后台生成 @ApiModelProperty(hidden = true) private String outTradeNo; - /** - * (必填)第三方订单号 - */ + // (必填)第三方订单号 @ApiModelProperty(hidden = true) private String tradeNo; - /** - * (必填)价格 - */ + // (必填)价格 @NotBlank private String totalAmount; - /** - * 订单状态,已支付,未支付,作废 - */ + // 订单状态,已支付,未支付,作废 @ApiModelProperty(hidden = true) private String state; - /** - * 创建时间,存入数据库时需要 - */ + // 创建时间,存入数据库时需要 @ApiModelProperty(hidden = true) private Timestamp createTime; - /** - * 作废时间,存入数据库时需要 - */ + // 作废时间,存入数据库时需要 @ApiModelProperty(hidden = true) private Date cancelTime; } diff --git a/eladmin-tools/src/main/java/me/zhengjie/repository/LocalStorageRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/LocalStorageRepository.java index f540b243..15554451 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/repository/LocalStorageRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/LocalStorageRepository.java @@ -8,5 +8,5 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; * @author Zheng Jie * @date 2019-09-05 */ -public interface LocalStorageRepository extends JpaRepository, JpaSpecificationExecutor { +public interface LocalStorageRepository extends JpaRepository, JpaSpecificationExecutor { } \ No newline at end of file diff --git a/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java index 27ab0351..6f3fbc7b 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java @@ -8,5 +8,5 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; * @author Zheng Jie * @date 2018-12-27 */ -public interface PictureRepository extends JpaRepository, JpaSpecificationExecutor { +public interface PictureRepository extends JpaRepository, JpaSpecificationExecutor { } diff --git a/eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java index 31bd91e7..86ff49c7 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java @@ -12,6 +12,6 @@ import org.springframework.data.jpa.repository.Query; public interface QiNiuConfigRepository extends JpaRepository { @Modifying - @Query(value = "update qiniu_content set type = ?1", nativeQuery = true) + @Query(value = "update QiniuConfig set type = ?1") void update(String type); } diff --git a/eladmin-tools/src/main/java/me/zhengjie/repository/QiniuContentRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/QiniuContentRepository.java index 1bd887e6..f6fdb1da 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/repository/QiniuContentRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/QiniuContentRepository.java @@ -8,12 +8,12 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; * @author Zheng Jie * @date 2018-12-31 */ -public interface QiniuContentRepository extends JpaRepository, JpaSpecificationExecutor { +public interface QiniuContentRepository extends JpaRepository, JpaSpecificationExecutor { /** * 根据key查询 - * @param key - * @return + * @param key 文件名 + * @return QiniuContent */ QiniuContent findByKey(String key); } diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java index 681a07c7..1bb063cb 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java @@ -1,5 +1,6 @@ package me.zhengjie.rest; +import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import me.zhengjie.aop.log.Log; @@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.nio.charset.StandardCharsets; import java.util.Map; /** @@ -24,22 +26,26 @@ import java.util.Map; */ @Slf4j @RestController -@RequestMapping("/api") +@RequestMapping("/api/aliPay") +@Api(tags = "支付宝支付管理") public class AliPayController { - @Autowired - AlipayUtils alipayUtils; + private final AlipayUtils alipayUtils; - @Autowired - private AlipayService alipayService; + private final AlipayService alipayService; - @GetMapping(value = "/aliPay") + public AliPayController(AlipayUtils alipayUtils, AlipayService alipayService) { + this.alipayUtils = alipayUtils; + this.alipayService = alipayService; + } + + @GetMapping public ResponseEntity get(){ return new ResponseEntity<>(alipayService.find(),HttpStatus.OK); } @Log("配置支付宝") - @PutMapping(value = "/aliPay") + @PutMapping public ResponseEntity payConfig(@Validated @RequestBody AlipayConfig alipayConfig){ alipayConfig.setId(1L); alipayService.update(alipayConfig); @@ -48,7 +54,7 @@ public class AliPayController { @Log("支付宝PC网页支付") @ApiOperation(value = "PC网页支付") - @PostMapping(value = "/aliPay/toPayAsPC") + @PostMapping(value = "/toPayAsPC") public ResponseEntity toPayAsPC(@Validated@RequestBody TradeVo trade) throws Exception{ AlipayConfig alipay = alipayService.find(); trade.setOutTradeNo(alipayUtils.getOrderCode()); @@ -58,7 +64,7 @@ public class AliPayController { @Log("支付宝手机网页支付") @ApiOperation(value = "手机网页支付") - @PostMapping(value = "/aliPay/toPayAsWeb") + @PostMapping(value = "/toPayAsWeb") public ResponseEntity toPayAsWeb(@Validated @RequestBody TradeVo trade) throws Exception{ AlipayConfig alipay = alipayService.find(); trade.setOutTradeNo(alipayUtils.getOrderCode()); @@ -67,7 +73,7 @@ public class AliPayController { } @ApiIgnore - @GetMapping("/aliPay/return") + @GetMapping("/return") @ApiOperation(value = "支付之后跳转的链接") public ResponseEntity returnPage(HttpServletRequest request, HttpServletResponse response) throws Exception { AlipayConfig alipay = alipayService.find(); @@ -75,47 +81,39 @@ public class AliPayController { //内容验签,防止黑客篡改参数 if(alipayUtils.rsaCheck(request,alipay)){ //商户订单号 - String outTradeNo = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8"); + String outTradeNo = new String(request.getParameter("out_trade_no").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); //支付宝交易号 - String tradeNo = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8"); + String tradeNo = new String(request.getParameter("trade_no").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); System.out.println("商户订单号"+outTradeNo+" "+"第三方交易号"+tradeNo); - /** - * 根据业务需要返回数据,这里统一返回OK - */ + // 根据业务需要返回数据,这里统一返回OK return new ResponseEntity<>("payment successful",HttpStatus.OK); }else{ - /** - * 根据业务需要返回数据 - */ + // 根据业务需要返回数据 return new ResponseEntity<>(HttpStatus.BAD_REQUEST); } } @ApiIgnore - @RequestMapping("/aliPay/notify") + @RequestMapping("/notify") @ApiOperation(value = "支付异步通知(要公网访问),接收异步通知,检查通知内容app_id、out_trade_no、total_amount是否与请求中的一致,根据trade_status进行后续业务处理") public ResponseEntity notify(HttpServletRequest request) throws Exception{ AlipayConfig alipay = alipayService.find(); Map parameterMap = request.getParameterMap(); - StringBuilder notifyBuild = new StringBuilder("/****************************** pay notify ******************************/\n"); - parameterMap.forEach((key, value) -> notifyBuild.append(key + "=" + value[0] + "\n") ); //内容验签,防止黑客篡改参数 if (alipayUtils.rsaCheck(request,alipay)) { //交易状态 - String tradeStatus = new String(request.getParameter("trade_status").getBytes("ISO-8859-1"),"UTF-8"); + String tradeStatus = new String(request.getParameter("trade_status").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); // 商户订单号 - String outTradeNo = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8"); + String outTradeNo = new String(request.getParameter("out_trade_no").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); //支付宝交易号 - String tradeNo = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8"); + String tradeNo = new String(request.getParameter("trade_no").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); //付款金额 - String totalAmount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8"); + String totalAmount = new String(request.getParameter("total_amount").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); //验证 - if(tradeStatus.equals(AliPayStatusEnum.SUCCESS.getValue())||tradeStatus.equals(AliPayStatusEnum.FINISHED.getValue())){ - /** - * 验证通过后应该根据业务需要处理订单 - */ - } +// if(tradeStatus.equals(AliPayStatusEnum.SUCCESS.getValue())||tradeStatus.equals(AliPayStatusEnum.FINISHED.getValue())){ +// // 验证通过后应该根据业务需要处理订单 +// } return new ResponseEntity(HttpStatus.OK); } return new ResponseEntity(HttpStatus.BAD_REQUEST); diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/EmailController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/EmailController.java index 4efcf4c8..ff3f15f1 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/EmailController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/EmailController.java @@ -1,11 +1,11 @@ package me.zhengjie.rest; -import lombok.extern.slf4j.Slf4j; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.domain.EmailConfig; import me.zhengjie.domain.vo.EmailVo; import me.zhengjie.service.EmailService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; @@ -16,30 +16,34 @@ import org.springframework.web.bind.annotation.*; * @author 郑杰 * @date 2018/09/28 6:55:53 */ -@Slf4j @RestController -@RequestMapping("api") +@RequestMapping("api/email") +@Api(tags = "邮件管理") public class EmailController { - @Autowired - private EmailService emailService; + private final EmailService emailService; - @GetMapping(value = "/email") + public EmailController(EmailService emailService) { + this.emailService = emailService; + } + + @GetMapping public ResponseEntity get(){ - return new ResponseEntity(emailService.find(),HttpStatus.OK); + return new ResponseEntity<>(emailService.find(),HttpStatus.OK); } @Log("配置邮件") - @PutMapping(value = "/email") + @PutMapping + @ApiOperation(value = "配置邮件") public ResponseEntity emailConfig(@Validated @RequestBody EmailConfig emailConfig){ emailService.update(emailConfig,emailService.find()); return new ResponseEntity(HttpStatus.OK); } @Log("发送邮件") - @PostMapping(value = "/email") + @PostMapping + @ApiOperation(value = "发送邮件") public ResponseEntity send(@Validated @RequestBody EmailVo emailVo) throws Exception { - log.warn("REST request to send Email : {}" +emailVo); emailService.send(emailVo,emailService.find()); return new ResponseEntity(HttpStatus.OK); } diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java index 6b91cbec..425cef30 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java @@ -4,7 +4,6 @@ import me.zhengjie.aop.log.Log; import me.zhengjie.domain.LocalStorage; import me.zhengjie.service.LocalStorageService; import me.zhengjie.service.dto.LocalStorageQueryCriteria; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -20,28 +19,31 @@ import org.springframework.web.multipart.MultipartFile; */ @Api(tags = "本地存储管理") @RestController -@RequestMapping("api") +@RequestMapping("/api/localStorage") public class LocalStorageController { - @Autowired - private LocalStorageService localStorageService; + private final LocalStorageService localStorageService; + + public LocalStorageController(LocalStorageService localStorageService) { + this.localStorageService = localStorageService; + } @ApiOperation(value = "查询文件") - @GetMapping(value = "/localStorage") + @GetMapping @PreAuthorize("hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_SELECT')") public ResponseEntity getLocalStorages(LocalStorageQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity(localStorageService.queryAll(criteria,pageable),HttpStatus.OK); + return new ResponseEntity<>(localStorageService.queryAll(criteria,pageable),HttpStatus.OK); } @ApiOperation(value = "上传文件") - @PostMapping(value = "/localStorage") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_CREATE')") public ResponseEntity create(@RequestParam String name, @RequestParam("file") MultipartFile file){ - return new ResponseEntity(localStorageService.create(name, file),HttpStatus.CREATED); + return new ResponseEntity<>(localStorageService.create(name, file),HttpStatus.CREATED); } @ApiOperation(value = "修改文件") - @PutMapping(value = "/localStorage") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_EDIT')") public ResponseEntity update(@Validated @RequestBody LocalStorage resources){ localStorageService.update(resources); @@ -49,20 +51,16 @@ public class LocalStorageController { } @ApiOperation(value = "删除文件") - @DeleteMapping(value = "/localStorage/{id}") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_DELETE')") public ResponseEntity delete(@PathVariable Long id){ localStorageService.delete(id); return new ResponseEntity(HttpStatus.OK); } - /** - * 删除多张图片 - * @param ids - * @return - */ - @Log("删除图片") - @DeleteMapping(value = "/localStorage") + @Log("多选删除") + @DeleteMapping + @ApiOperation(value = "多选删除") public ResponseEntity deleteAll(@RequestBody Long[] ids) { localStorageService.deleteAll(ids); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java index 543ee3a2..f5168f13 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java @@ -1,11 +1,12 @@ package me.zhengjie.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.domain.Picture; import me.zhengjie.service.PictureService; import me.zhengjie.service.dto.PictureQueryCriteria; import me.zhengjie.utils.SecurityUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -20,28 +21,28 @@ import java.util.Map; * @date 2018/09/20 14:13:32 */ @RestController -@RequestMapping("/api") +@RequestMapping("/api/pictures") +@Api(tags = "免费图床管理") public class PictureController { - @Autowired - private PictureService pictureService; + private final PictureService pictureService; + + public PictureController(PictureService pictureService) { + this.pictureService = pictureService; + } @Log("查询图片") @PreAuthorize("hasAnyRole('ADMIN','PICTURE_ALL','PICTURE_SELECT')") - @GetMapping(value = "/pictures") + @GetMapping + @ApiOperation(value = "查询图片") public ResponseEntity getRoles(PictureQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity(pictureService.queryAll(criteria,pageable),HttpStatus.OK); + return new ResponseEntity<>(pictureService.queryAll(criteria,pageable),HttpStatus.OK); } - /** - * 上传图片 - * @param file - * @return - * @throws Exception - */ @Log("上传图片") @PreAuthorize("hasAnyRole('ADMIN','PICTURE_ALL','PICTURE_UPLOAD')") - @PostMapping(value = "/pictures") + @PostMapping + @ApiOperation(value = "上传图片") public ResponseEntity upload(@RequestParam MultipartFile file){ String userName = SecurityUtils.getUsername(); Picture picture = pictureService.upload(file,userName); @@ -49,30 +50,22 @@ public class PictureController { map.put("errno",0); map.put("id",picture.getId()); map.put("data",new String[]{picture.getUrl()}); - return new ResponseEntity(map,HttpStatus.OK); + return new ResponseEntity<>(map,HttpStatus.OK); } - /** - * 删除图片 - * @param id - * @return - */ @Log("删除图片") + @ApiOperation(value = "删除图片") @PreAuthorize("hasAnyRole('ADMIN','PICTURE_ALL','PICTURE_DELETE')") - @DeleteMapping(value = "/pictures/{id}") + @DeleteMapping(value = "/{id}") public ResponseEntity delete(@PathVariable Long id) { pictureService.delete(pictureService.findById(id)); return new ResponseEntity(HttpStatus.OK); } - /** - * 删除多张图片 - * @param ids - * @return - */ - @Log("删除图片") + @Log("多选删除图片") + @ApiOperation(value = "多选删除图片") @PreAuthorize("hasAnyRole('ADMIN','PICTURE_ALL','PICTURE_DELETE')") - @DeleteMapping(value = "/pictures") + @DeleteMapping public ResponseEntity deleteAll(@RequestBody Long[] ids) { pictureService.deleteAll(ids); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java index e327618f..371c0506 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java @@ -1,12 +1,13 @@ package me.zhengjie.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import me.zhengjie.aop.log.Log; import me.zhengjie.domain.QiniuConfig; import me.zhengjie.domain.QiniuContent; import me.zhengjie.service.QiNiuService; import me.zhengjie.service.dto.QiniuQueryCriteria; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -24,17 +25,22 @@ import java.util.Map; @Slf4j @RestController @RequestMapping("api") +@Api(tags = "七牛云存储管理") public class QiniuController { - @Autowired - private QiNiuService qiNiuService; + private final QiNiuService qiNiuService; + + public QiniuController(QiNiuService qiNiuService) { + this.qiNiuService = qiNiuService; + } @GetMapping(value = "/qiNiuConfig") public ResponseEntity get(){ - return new ResponseEntity(qiNiuService.find(), HttpStatus.OK); + return new ResponseEntity<>(qiNiuService.find(), HttpStatus.OK); } @Log("配置七牛云存储") + @ApiOperation(value = "配置七牛云存储") @PutMapping(value = "/qiNiuConfig") public ResponseEntity emailConfig(@Validated @RequestBody QiniuConfig qiniuConfig){ qiNiuService.update(qiniuConfig); @@ -43,72 +49,51 @@ public class QiniuController { } @Log("查询文件") + @ApiOperation(value = "查询文件") @GetMapping(value = "/qiNiuContent") public ResponseEntity getRoles(QiniuQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity(qiNiuService.queryAll(criteria,pageable),HttpStatus.OK); + return new ResponseEntity<>(qiNiuService.queryAll(criteria,pageable),HttpStatus.OK); } - /** - * 上传文件到七牛云 - * @param file - * @return - */ @Log("上传文件") + @ApiOperation(value = "上传文件") @PostMapping(value = "/qiNiuContent") public ResponseEntity upload(@RequestParam MultipartFile file){ QiniuContent qiniuContent = qiNiuService.upload(file,qiNiuService.find()); - Map map = new HashMap(3); + Map map = new HashMap<>(3); map.put("id",qiniuContent.getId()); map.put("errno",0); map.put("data",new String[]{qiniuContent.getUrl()}); - return new ResponseEntity(map,HttpStatus.OK); + return new ResponseEntity<>(map,HttpStatus.OK); } - /** - * 同步七牛云数据到数据库 - * @return - */ @Log("同步七牛云数据") + @ApiOperation(value = "同步七牛云数据") @PostMapping(value = "/qiNiuContent/synchronize") public ResponseEntity synchronize(){ - log.warn("REST request to synchronize qiNiu : {}"); qiNiuService.synchronize(qiNiuService.find()); return new ResponseEntity(HttpStatus.OK); } - /** - * 下载七牛云文件 - * @param id - * @return - * @throws Exception - */ @Log("下载文件") + @ApiOperation(value = "下载文件") @GetMapping(value = "/qiNiuContent/download/{id}") public ResponseEntity download(@PathVariable Long id){ - Map map = new HashMap(1); + Map map = new HashMap<>(1); map.put("url", qiNiuService.download(qiNiuService.findByContentId(id),qiNiuService.find())); - return new ResponseEntity(map,HttpStatus.OK); + return new ResponseEntity<>(map,HttpStatus.OK); } - /** - * 删除七牛云文件 - * @param id - * @return - * @throws Exception - */ @Log("删除文件") + @ApiOperation(value = "删除文件") @DeleteMapping(value = "/qiNiuContent/{id}") public ResponseEntity delete(@PathVariable Long id){ qiNiuService.delete(qiNiuService.findByContentId(id),qiNiuService.find()); return new ResponseEntity(HttpStatus.OK); } - /** - * 删除多张图片 - * @param ids - * @return - */ - @Log("删除图片") + @Log("删除多张图片") + @ApiOperation(value = "删除多张图片") @DeleteMapping(value = "/qiNiuContent") public ResponseEntity deleteAll(@RequestBody Long[] ids) { qiNiuService.deleteAll(ids, qiNiuService.find()); diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/VerificationCodeController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/VerificationCodeController.java index 557631ad..718b2579 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/VerificationCodeController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/VerificationCodeController.java @@ -1,11 +1,12 @@ package me.zhengjie.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.domain.VerificationCode; import me.zhengjie.domain.vo.EmailVo; import me.zhengjie.service.EmailService; import me.zhengjie.service.VerificationCodeService; import me.zhengjie.utils.ElAdminConstant; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -18,19 +19,20 @@ import org.springframework.web.bind.annotation.*; */ @RestController @RequestMapping("api") +@Api(tags = "验证码管理") public class VerificationCodeController { - @Autowired - private VerificationCodeService verificationCodeService; + private final VerificationCodeService verificationCodeService; - @Autowired - @Qualifier("jwtUserDetailsService") - private UserDetailsService userDetailsService; + private final EmailService emailService; - @Autowired - private EmailService emailService; + public VerificationCodeController(VerificationCodeService verificationCodeService, @Qualifier("jwtUserDetailsService") UserDetailsService userDetailsService, EmailService emailService) { + this.verificationCodeService = verificationCodeService; + this.emailService = emailService; + } @PostMapping(value = "/code/resetEmail") + @ApiOperation(value = "重置邮箱,发送验证码") public ResponseEntity resetEmail(@RequestBody VerificationCode code) throws Exception { code.setScenes(ElAdminConstant.RESET_MAIL); EmailVo emailVo = verificationCodeService.sendEmail(code); @@ -39,6 +41,7 @@ public class VerificationCodeController { } @PostMapping(value = "/code/email/resetPass") + @ApiOperation(value = "重置密码,发送验证码") public ResponseEntity resetPass(@RequestParam String email) throws Exception { VerificationCode code = new VerificationCode(); code.setType("email"); @@ -50,6 +53,7 @@ public class VerificationCodeController { } @GetMapping(value = "/code/validated") + @ApiOperation(value = "验证码验证") public ResponseEntity validated(VerificationCode code){ verificationCodeService.validated(code); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/AlipayService.java b/eladmin-tools/src/main/java/me/zhengjie/service/AlipayService.java index f4e09423..69629d38 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/AlipayService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/AlipayService.java @@ -15,33 +15,33 @@ public interface AlipayService { /** * 处理来自PC的交易请求 - * @param alipay - * @param trade - * @return - * @throws Exception + * @param alipay 支付宝配置 + * @param trade 交易详情 + * @return String + * @throws Exception 异常 */ String toPayAsPC(AlipayConfig alipay, TradeVo trade) throws Exception; /** * 处理来自手机网页的交易请求 - * @param alipay - * @param trade - * @return - * @throws Exception + * @param alipay 支付宝配置 + * @param trade 交易详情 + * @return String + * @throws Exception 异常 */ String toPayAsWeb(AlipayConfig alipay, TradeVo trade) throws Exception; /** * 查询配置 - * @return + * @return AlipayConfig */ @Cacheable(key = "'1'") AlipayConfig find(); /** * 更新配置 - * @param alipayConfig - * @return + * @param alipayConfig 支付宝配置 + * @return AlipayConfig */ @CachePut(key = "'1'") AlipayConfig update(AlipayConfig alipayConfig); diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/EmailService.java b/eladmin-tools/src/main/java/me/zhengjie/service/EmailService.java index deae90c1..ed0d9432 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/EmailService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/EmailService.java @@ -16,24 +16,24 @@ public interface EmailService { /** * 更新邮件配置 - * @param emailConfig - * @param old - * @return + * @param emailConfig 邮件配置 + * @param old 旧的配置 + * @return EmailConfig */ @CachePut(key = "'1'") EmailConfig update(EmailConfig emailConfig, EmailConfig old); /** * 查询配置 - * @return + * @return EmailConfig 邮件配置 */ @Cacheable(key = "'1'") EmailConfig find(); /** * 发送邮件 - * @param emailVo - * @param emailConfig + * @param emailVo 邮件发送的内容 + * @param emailConfig 邮件配置 * @throws Exception */ @Async diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java b/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java index 6636cd0f..504997e5 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java @@ -18,52 +18,56 @@ public interface LocalStorageService { /** * queryAll 分页 - * @param criteria - * @param pageable - * @return + * @param criteria 条件参数 + * @param pageable 分页参数 + * @return Object */ @Cacheable Object queryAll(LocalStorageQueryCriteria criteria, Pageable pageable); /** * queryAll 不分页 - * @param criteria - * @return + * @param criteria 条件参数 + * @return Object */ @Cacheable - public Object queryAll(LocalStorageQueryCriteria criteria); + Object queryAll(LocalStorageQueryCriteria criteria); /** * findById * @param id - * @return + * @return LocalStorageDTO */ @Cacheable(key = "#p0") LocalStorageDTO findById(Long id); /** * create - * @param name - * @param file - * @return + * @param name 文件名称 + * @param file 文件资源 + * @return LocalStorageDTO */ @CacheEvict(allEntries = true) LocalStorageDTO create(String name, MultipartFile file); /** * update - * @param resources + * @param resources 资源实体 */ @CacheEvict(allEntries = true) void update(LocalStorage resources); /** * delete - * @param id + * @param id 文件ID */ @CacheEvict(allEntries = true) void delete(Long id); + /** + * 多文件删除 + * @param ids 文件数组 + */ @CacheEvict(allEntries = true) void deleteAll(Long[] ids); } \ No newline at end of file diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/PictureService.java b/eladmin-tools/src/main/java/me/zhengjie/service/PictureService.java index 8d299ea5..eb8a0e5f 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/PictureService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/PictureService.java @@ -16,17 +16,17 @@ public interface PictureService { /** * 查询图片 - * @param criteria - * @param pageable - * @return + * @param criteria 条件参数 + * @param pageable 分页参数 + * @return Object */ @Cacheable Object queryAll(PictureQueryCriteria criteria, Pageable pageable); /** * 上传图片 - * @param file - * @param username + * @param file 文件 + * @param username 用户名 * @return */ @CacheEvict(allEntries = true) @@ -34,7 +34,7 @@ public interface PictureService { /** * 根据ID查询 - * @param id + * @param id 文件ID * @return */ @Cacheable(key = "#p0") @@ -42,14 +42,14 @@ public interface PictureService { /** * 删除图片 - * @param picture + * @param picture 图片实体 */ @CacheEvict(allEntries = true) void delete(Picture picture); /** * 删除图片 - * @param ids + * @param ids 文件ID数组 */ @CacheEvict(allEntries = true) void deleteAll(Long[] ids); diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java b/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java index a161640e..16e37ad0 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java @@ -20,16 +20,16 @@ public interface QiNiuService { /** * 查询文件 - * @param criteria - * @param pageable - * @return + * @param criteria 条件参数 + * @param pageable 分页参数 + * @return Object */ @Cacheable Object queryAll(QiniuQueryCriteria criteria, Pageable pageable); /** * 查配置 - * @return + * @return Cacheable */ @Cacheable(cacheNames = "qiNiuConfig", key = "'1'") QiniuConfig find(); @@ -37,7 +37,7 @@ public interface QiNiuService { /** * 修改配置 * @param qiniuConfig - * @return + * @return QiniuConfig */ @CachePut(cacheNames = "qiNiuConfig", key = "'1'") QiniuConfig update(QiniuConfig qiniuConfig); @@ -46,7 +46,7 @@ public interface QiNiuService { * 上传文件 * @param file * @param qiniuConfig - * @return + * @return QiniuContent */ @CacheEvict(allEntries = true) QiniuContent upload(MultipartFile file, QiniuConfig qiniuConfig); @@ -54,7 +54,7 @@ public interface QiNiuService { /** * 查询文件 * @param id - * @return + * @return QiniuContent */ @Cacheable(key = "'content:'+#p0") QiniuContent findByContentId(Long id); @@ -63,34 +63,37 @@ public interface QiNiuService { * 下载文件 * @param content * @param config - * @return + * @return String */ String download(QiniuContent content, QiniuConfig config); /** * 删除文件 - * @param content - * @param config - * @return + * @param content 文件 + * @param config 配置 */ @CacheEvict(allEntries = true) void delete(QiniuContent content, QiniuConfig config); /** * 同步数据 - * @param config + * @param config 配置 */ @CacheEvict(allEntries = true) void synchronize(QiniuConfig config); /** * 删除文件 - * @param ids - * @param config + * @param ids 文件ID数组 + * @param config 配置 */ @CacheEvict(allEntries = true) void deleteAll(Long[] ids, QiniuConfig config); + /** + * 更新数据 + * @param type 类型 + */ @CacheEvict(allEntries = true) void update(String type); } diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/VerificationCodeService.java b/eladmin-tools/src/main/java/me/zhengjie/service/VerificationCodeService.java index eaf8f0ec..058947f5 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/VerificationCodeService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/VerificationCodeService.java @@ -11,13 +11,14 @@ public interface VerificationCodeService { /** * 发送邮件验证码 - * @param code + * @param code 验证码 + * @return EmailVo */ EmailVo sendEmail(VerificationCode code); /** * 验证 - * @param code + * @param code 验证码 */ void validated(VerificationCode code); } diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/AlipayServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/AlipayServiceImpl.java index 63715b5a..611b9a05 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/AlipayServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/AlipayServiceImpl.java @@ -40,19 +40,13 @@ public class AlipayServiceImpl implements AlipayService { double money = Double.parseDouble(trade.getTotalAmount()); - /** - * 创建API对应的request(电脑网页版) - */ + // 创建API对应的request(电脑网页版) AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); - /** - * 订单完成后返回的页面和异步通知地址 - */ + // 订单完成后返回的页面和异步通知地址 request.setReturnUrl(alipay.getReturnUrl()); request.setNotifyUrl(alipay.getNotifyUrl()); - /** - * 填充订单参数 - */ + // 填充订单参数 request.setBizContent("{" + " \"out_trade_no\":\""+trade.getOutTradeNo()+"\"," + " \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," + @@ -63,10 +57,7 @@ public class AlipayServiceImpl implements AlipayService { " \"sys_service_provider_id\":\""+alipay.getSysServiceProviderId()+"\"" + " }"+ " }");//填充业务参数 - /** - * 调用SDK生成表单 - * 通过GET方式,口可以获取url - */ + // 调用SDK生成表单, 通过GET方式,口可以获取url return alipayClient.pageExecute(request, "GET").getBody(); } @@ -82,20 +73,10 @@ public class AlipayServiceImpl implements AlipayService { if(money <= 0 || money >= 5000){ throw new BadRequestException("测试金额过大"); } - - /** - * 创建API对应的request(手机网页版) - */ + // 创建API对应的request(手机网页版) AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest(); - - /** - * 订单完成后返回的页面和异步通知地址 - */ request.setReturnUrl(alipay.getReturnUrl()); request.setNotifyUrl(alipay.getNotifyUrl()); - /** - * 填充订单参数 - */ request.setBizContent("{" + " \"out_trade_no\":\""+trade.getOutTradeNo()+"\"," + " \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," + @@ -106,21 +87,13 @@ public class AlipayServiceImpl implements AlipayService { " \"sys_service_provider_id\":\""+alipay.getSysServiceProviderId()+"\"" + " }"+ " }");//填充业务参数 - /** - * 调用SDK生成表单 - * 通过GET方式,口可以获取url - */ return alipayClient.pageExecute(request, "GET").getBody(); } @Override public AlipayConfig find() { Optional alipayConfig = alipayRepository.findById(1L); - if (alipayConfig.isPresent()){ - return alipayConfig.get(); - } else { - return new AlipayConfig(); - } + return alipayConfig.orElseGet(AlipayConfig::new); } @Override diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java index a0da7efd..56ac2ac2 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java @@ -2,15 +2,12 @@ package me.zhengjie.service.impl; import cn.hutool.extra.mail.Mail; import cn.hutool.extra.mail.MailAccount; -import cn.hutool.extra.mail.MailUtil; import me.zhengjie.domain.EmailConfig; import me.zhengjie.domain.vo.EmailVo; import me.zhengjie.exception.BadRequestException; import me.zhengjie.repository.EmailRepository; import me.zhengjie.service.EmailService; -import me.zhengjie.utils.ElAdminConstant; import me.zhengjie.utils.EncryptUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -24,8 +21,11 @@ import java.util.Optional; @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class EmailServiceImpl implements EmailService { - @Autowired - private EmailRepository emailRepository; + private final EmailRepository emailRepository; + + public EmailServiceImpl(EmailRepository emailRepository) { + this.emailRepository = emailRepository; + } @Override @Transactional(rollbackFor = Exception.class) @@ -44,11 +44,7 @@ public class EmailServiceImpl implements EmailService { @Override public EmailConfig find() { Optional emailConfig = emailRepository.findById(1L); - if(emailConfig.isPresent()){ - return emailConfig.get(); - } else { - return new EmailConfig(); - } + return emailConfig.orElseGet(EmailConfig::new); } @Override @@ -57,9 +53,7 @@ public class EmailServiceImpl implements EmailService { if(emailConfig == null){ throw new BadRequestException("请先配置,再操作"); } - /** - * 封装 - */ + // 封装 MailAccount account = new MailAccount(); account.setHost(emailConfig.getHost()); account.setPort(Integer.parseInt(emailConfig.getPort())); @@ -71,15 +65,14 @@ public class EmailServiceImpl implements EmailService { throw new BadRequestException(e.getMessage()); } account.setFrom(emailConfig.getUser()+"<"+emailConfig.getFromUser()+">"); - //ssl方式发送 + // ssl方式发送 account.setSslEnable(true); String content = emailVo.getContent(); - /** - * 发送 - */ + // 发送 try { + int size = emailVo.getTos().size(); Mail.create(account) - .setTos(emailVo.getTos().toArray(new String[emailVo.getTos().size()])) + .setTos(emailVo.getTos().toArray(new String[size])) .setTitle(emailVo.getSubject()) .setContent(content) .setHtml(true) diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java index f0830b5f..e3119df8 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java @@ -1,19 +1,16 @@ package me.zhengjie.service.impl; import me.zhengjie.domain.LocalStorage; -import me.zhengjie.exception.BadRequestException; import me.zhengjie.utils.*; import me.zhengjie.repository.LocalStorageRepository; import me.zhengjie.service.LocalStorageService; import me.zhengjie.service.dto.LocalStorageDTO; import me.zhengjie.service.dto.LocalStorageQueryCriteria; import me.zhengjie.service.mapper.LocalStorageMapper; -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.io.File; import java.util.Optional; import org.springframework.data.domain.Page; @@ -28,11 +25,9 @@ import org.springframework.web.multipart.MultipartFile; @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class LocalStorageServiceImpl implements LocalStorageService { - @Autowired - private LocalStorageRepository localStorageRepository; + private final LocalStorageRepository localStorageRepository; - @Autowired - private LocalStorageMapper localStorageMapper; + private final LocalStorageMapper localStorageMapper; @Value("${file.path}") private String path; @@ -40,6 +35,11 @@ public class LocalStorageServiceImpl implements LocalStorageService { @Value("${file.maxSize}") private long maxSize; + public LocalStorageServiceImpl(LocalStorageRepository localStorageRepository, LocalStorageMapper localStorageMapper) { + this.localStorageRepository = localStorageRepository; + this.localStorageMapper = localStorageMapper; + } + @Override public Object queryAll(LocalStorageQueryCriteria criteria, Pageable pageable){ Page page = localStorageRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); @@ -85,11 +85,6 @@ public class LocalStorageServiceImpl implements LocalStorageService { } } - public static void main(String[] args) { - File file = new File("C:\\Users\\Jie\\Pictures\\Saved Pictures\\demo1.jpg"); - System.out.println(FileUtil.getType(file)); - } - @Override @Transactional(rollbackFor = Exception.class) public void update(LocalStorage resources) { diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java index 2c128ca5..185ff147 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java @@ -30,14 +30,17 @@ import java.util.Optional; @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class PictureServiceImpl implements PictureService { - @Autowired - private PictureRepository pictureRepository; + private final PictureRepository pictureRepository; - public static final String SUCCESS = "success"; + private static final String SUCCESS = "success"; - public static final String CODE = "code"; + private static final String CODE = "code"; - public static final String MSG = "message"; + private static final String MSG = "message"; + + public PictureServiceImpl(PictureRepository pictureRepository) { + this.pictureRepository = pictureRepository; + } @Override public Object queryAll(PictureQueryCriteria criteria, Pageable pageable){ @@ -60,7 +63,7 @@ public class PictureServiceImpl implements PictureService { } //转成实体类 picture = JSON.parseObject(jsonObject.get("data").toString(), Picture.class); - picture.setSize(FileUtil.getSize(Integer.valueOf(picture.getSize()))); + picture.setSize(FileUtil.getSize(Integer.parseInt(picture.getSize()))); picture.setUsername(username); picture.setFilename(FileUtil.getFileNameNoEx(multipartFile.getOriginalFilename())+"."+FileUtil.getExtensionName(multipartFile.getOriginalFilename())); pictureRepository.save(picture); diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java index 530a363d..505dfc37 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java @@ -29,6 +29,7 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import java.util.Map; import java.util.Optional; /** @@ -39,17 +40,18 @@ import java.util.Optional; @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class QiNiuServiceImpl implements QiNiuService { - @Autowired - private QiNiuConfigRepository qiNiuConfigRepository; + private final QiNiuConfigRepository qiNiuConfigRepository; - @Autowired - private QiniuContentRepository qiniuContentRepository; + private final QiniuContentRepository qiniuContentRepository; + + public QiNiuServiceImpl(QiNiuConfigRepository qiNiuConfigRepository, QiniuContentRepository qiniuContentRepository) { + this.qiNiuConfigRepository = qiNiuConfigRepository; + this.qiniuContentRepository = qiniuContentRepository; + } @Value("${qiniu.max-size}") private Long maxSize; - private final String TYPE = "公开"; - @Override public Object queryAll(QiniuQueryCriteria criteria, Pageable pageable){ return PageUtil.toPage(qiniuContentRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable)); @@ -58,11 +60,7 @@ public class QiNiuServiceImpl implements QiNiuService { @Override public QiniuConfig find() { Optional qiniuConfig = qiNiuConfigRepository.findById(1L); - if(qiniuConfig.isPresent()){ - return qiniuConfig.get(); - } else { - return new QiniuConfig(); - } + return qiniuConfig.orElseGet(QiniuConfig::new); } @Override @@ -82,9 +80,7 @@ public class QiNiuServiceImpl implements QiNiuService { if(qiniuConfig.getId() == null){ throw new BadRequestException("请先添加相应配置,再操作"); } - /** - * 构造一个带指定Zone对象的配置类 - */ + // 构造一个带指定Zone对象的配置类 Configuration cfg = new Configuration(QiNiuUtil.getRegion(qiniuConfig.getZone())); UploadManager uploadManager = new UploadManager(cfg); Auth auth = Auth.create(qiniuConfig.getAccessKey(), qiniuConfig.getSecretKey()); @@ -122,13 +118,12 @@ public class QiNiuServiceImpl implements QiNiuService { @Override public String download(QiniuContent content,QiniuConfig config){ String finalUrl = null; + String TYPE = "公开"; if(TYPE.equals(content.getType())){ finalUrl = content.getUrl(); } else { Auth auth = Auth.create(config.getAccessKey(), config.getSecretKey()); - /** - * 1小时,可以自定义链接过期时间 - */ + // 1小时,可以自定义链接过期时间 long expireInSeconds = 3600; finalUrl = auth.privateDownloadUrl(content.getUrl(), expireInSeconds); } diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/VerificationCodeServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/VerificationCodeServiceImpl.java index ebac5e1a..0dda045c 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/VerificationCodeServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/VerificationCodeServiceImpl.java @@ -17,6 +17,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; +import java.util.Collections; import java.util.concurrent.*; /** @@ -45,12 +46,12 @@ public class VerificationCodeServiceImpl implements VerificationCodeService { if(verificationCode == null){ code.setCode(RandomUtil.randomNumbers (6)); content = template.render(Dict.create().set("code",code.getCode())); - emailVo = new EmailVo(Arrays.asList(code.getValue()),"eladmin后台管理系统",content); + emailVo = new EmailVo(Collections.singletonList(code.getValue()),"eladmin后台管理系统",content); timedDestruction(verificationCodeRepository.save(code)); // 存在就再次发送原来的验证码 } else { content = template.render(Dict.create().set("code",verificationCode.getCode())); - emailVo = new EmailVo(Arrays.asList(verificationCode.getValue()),"eladmin后台管理系统",content); + emailVo = new EmailVo(Collections.singletonList(verificationCode.getValue()),"eladmin后台管理系统",content); } return emailVo; } @@ -68,7 +69,7 @@ public class VerificationCodeServiceImpl implements VerificationCodeService { /** * 定时任务,指定分钟后改变验证码状态 - * @param verifyCode + * @param verifyCode 验证码 */ private void timedDestruction(VerificationCode verifyCode) { //以下示例为程序调用结束继续运行 diff --git a/eladmin-tools/src/main/java/me/zhengjie/utils/AliPayStatusEnum.java b/eladmin-tools/src/main/java/me/zhengjie/utils/AliPayStatusEnum.java index 46e6b7cf..39713cd5 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/utils/AliPayStatusEnum.java +++ b/eladmin-tools/src/main/java/me/zhengjie/utils/AliPayStatusEnum.java @@ -27,11 +27,9 @@ public enum AliPayStatusEnum { */ CLOSED("交易关闭", "TRADE_CLOSED"); - private String name; private String value; AliPayStatusEnum(String name, String value) { - this.name = name; this.value = value; } diff --git a/eladmin-tools/src/main/java/me/zhengjie/utils/AlipayUtils.java b/eladmin-tools/src/main/java/me/zhengjie/utils/AlipayUtils.java index 6c6b2dcc..5b7d6dbd 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/utils/AlipayUtils.java +++ b/eladmin-tools/src/main/java/me/zhengjie/utils/AlipayUtils.java @@ -22,7 +22,6 @@ public class AlipayUtils { /** * 生成订单号 - * @return */ public String getOrderCode() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -35,24 +34,19 @@ public class AlipayUtils { String[] split1 = s.split(" "); String s1 = split1[0] + split1[1]; String[] split2 = s1.split(":"); - String s2 = split2[0] + split2[1] + split2[2] + a; - return s2; + return split2[0] + split2[1] + split2[2] + a; } /** * 校验签名 - * @param request - * @return */ public boolean rsaCheck(HttpServletRequest request, AlipayConfig alipay){ - /** - * 获取支付宝POST过来反馈信息 - */ + // 获取支付宝POST过来反馈信息 Map params = new HashMap<>(1); Map requestParams = request.getParameterMap(); - for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) { - String name = (String) iter.next(); + for (Object o : requestParams.keySet()) { + String name = (String) o; String[] values = (String[]) requestParams.get(name); String valueStr = ""; for (int i = 0; i < values.length; i++) { @@ -63,11 +57,10 @@ public class AlipayUtils { } try { - boolean verifyResult = AlipaySignature.rsaCheckV1(params, + return AlipaySignature.rsaCheckV1(params, alipay.getPublicKey(), alipay.getCharset(), alipay.getSignType()); - return verifyResult; } catch (AlipayApiException e) { return false; } diff --git a/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java b/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java index 4ff7dc83..8ae059b8 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java +++ b/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java @@ -11,18 +11,16 @@ import java.util.Date; */ public class QiNiuUtil { - public static final String HUAD = "华东"; + private static final String HUAD = "华东"; - public static final String HUAB = "华北"; + private static final String HUAB = "华北"; - public static final String HUAN = "华南"; + private static final String HUAN = "华南"; - public static final String BEIM = "北美"; + private static final String BEIM = "北美"; /** * 得到机房的对应关系 - * @param zone - * @return */ public static Region getRegion(String zone){ @@ -42,17 +40,13 @@ public class QiNiuUtil { /** * 默认不指定key的情况下,以文件内容的hash值作为文件名 - * @param file - * @return */ public static String getKey(String file){ - StringBuffer key = new StringBuffer(FileUtil.getFileNameNoEx(file)); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); Date date = new Date(); - key.append("-"); - key.append(sdf.format(date)); - key.append("."); - key.append(FileUtil.getExtensionName(file)); - return key.toString(); + return FileUtil.getFileNameNoEx(file) + "-" + + sdf.format(date) + + "." + + FileUtil.getExtensionName(file); } } From bf7c1eebf08e362b478d00d0ef399d7a16f89ffc Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Thu, 24 Oct 2019 17:54:33 +0800 Subject: [PATCH 03/25] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=AE=8C=E6=88=90=EF=BC=8C=E5=8E=BB=E9=99=A4=E5=A4=A7=E9=87=8F?= =?UTF-8?q?idea=E8=AD=A6=E5=91=8A,=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=99=A8=E4=BC=98=E5=8C=96=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/zhengjie/annotation/Query.java | 4 +- .../redis/FastJsonRedisSerializer.java | 2 +- .../me/zhengjie/swagger2/SwaggerConfig.java | 2 +- .../java/me/zhengjie/utils/EncryptUtils.java | 3 - .../main/java/me/zhengjie/utils/FileUtil.java | 68 ++++++++++++++- .../java/me/zhengjie/utils/QueryHelp.java | 7 +- .../java/me/zhengjie/utils/SecurityUtils.java | 2 +- .../zhengjie/utils/SpringContextHolder.java | 14 +--- .../java/me/zhengjie/utils/StringUtils.java | 23 +----- .../me/zhengjie/utils/TranslatorUtil.java | 2 +- .../me/zhengjie/utils/ValidationUtil.java | 10 +-- .../me/zhengjie/utils/StringUtilsTest.java | 6 -- .../java/me/zhengjie/domain/GenConfig.java | 14 ++-- .../me/zhengjie/domain/vo/ColumnInfo.java | 16 ++-- .../java/me/zhengjie/domain/vo/TableInfo.java | 4 +- .../me/zhengjie/rest/GenConfigController.java | 29 ++++--- .../me/zhengjie/rest/GeneratorController.java | 47 +++++------ .../me/zhengjie/service/GenConfigService.java | 12 --- .../me/zhengjie/service/GeneratorService.java | 16 ++-- .../service/impl/GenConfigServiceImpl.java | 37 +++++---- .../service/impl/GeneratorServiceImpl.java | 14 ++-- .../main/java/me/zhengjie/utils/ColUtil.java | 7 +- .../main/java/me/zhengjie/utils/GenUtil.java | 33 +++++--- .../java/me/zhengjie/aspect/LogAspect.java | 2 +- .../src/main/java/me/zhengjie/domain/Log.java | 36 ++------ .../me/zhengjie/repository/LogRepository.java | 14 +--- .../java/me/zhengjie/rest/LogController.java | 33 +++++--- .../java/me/zhengjie/service/LogService.java | 23 +----- .../me/zhengjie/service/dto/LogErrorDTO.java | 24 ++---- .../me/zhengjie/service/dto/LogSmallDTO.java | 17 +--- .../zhengjie/service/impl/LogServiceImpl.java | 41 +++++----- .../service/mapper/LogErrorMapper.java | 2 +- .../service/mapper/LogSmallMapper.java | 2 +- .../java/me/zhengjie/config/DataScope.java | 17 ++-- .../monitor/config/VisitsInitialization.java | 8 +- .../monitor/repository/VisitsRepository.java | 14 ++-- .../modules/monitor/rest/LimitController.java | 8 +- .../modules/monitor/rest/RedisController.java | 25 ++++-- .../monitor/rest/VisitsController.java | 25 ++++-- .../modules/monitor/service/RedisService.java | 14 ++-- .../monitor/service/VisitsService.java | 7 +- .../service/impl/RedisServiceImpl.java | 26 +++--- .../service/impl/VisitsServiceImpl.java | 15 ++-- .../modules/quartz/config/JobRunner.java | 19 ++--- .../modules/quartz/config/QuartzConfig.java | 18 ++-- .../modules/quartz/domain/QuartzJob.java | 32 ++------ .../modules/quartz/domain/QuartzLog.java | 36 ++------ .../repository/QuartzJobRepository.java | 4 +- .../repository/QuartzLogRepository.java | 2 +- .../quartz/rest/QuartzJobController.java | 46 +++++++---- .../quartz/service/QuartzJobService.java | 46 +---------- .../service/impl/QuartzJobServiceImpl.java | 33 +++++--- .../modules/quartz/task/VisitsTask.java | 8 +- .../modules/quartz/utils/ExecutionJob.java | 7 +- .../modules/quartz/utils/QuartzManage.java | 15 ++-- .../modules/quartz/utils/QuartzRunnable.java | 3 +- .../security/config/SecurityConfig.java | 23 +++--- .../rest/AuthenticationController.java | 46 +++++------ .../security/JwtAuthenticationEntryPoint.java | 4 +- .../service/JwtPermissionService.java | 12 +-- .../service/JwtUserDetailsService.java | 12 +-- .../modules/security/utils/JwtTokenUtil.java | 6 +- .../security/utils/VerifyCodeUtils.java | 46 +++++------ .../zhengjie/modules/system/domain/Dept.java | 9 -- .../zhengjie/modules/system/domain/Dict.java | 6 -- .../modules/system/domain/DictDetail.java | 16 +--- .../zhengjie/modules/system/domain/Job.java | 12 --- .../zhengjie/modules/system/domain/Menu.java | 8 +- .../modules/system/domain/Permission.java | 4 +- .../system/repository/DeptRepository.java | 8 +- .../repository/DictDetailRepository.java | 2 +- .../system/repository/DictRepository.java | 2 +- .../system/repository/JobRepository.java | 2 +- .../system/repository/MenuRepository.java | 21 +---- .../repository/PermissionRepository.java | 12 +-- .../system/repository/RoleRepository.java | 8 +- .../repository/UserAvatarRepository.java | 4 +- .../system/repository/UserRepository.java | 35 +------- .../modules/system/rest/DeptController.java | 33 +++++--- .../modules/system/rest/DictController.java | 28 +++++-- .../system/rest/DictDetailController.java | 35 +++++--- .../modules/system/rest/JobController.java | 32 +++++--- .../modules/system/rest/MenuController.java | 56 +++++++------ .../system/rest/PermissionController.java | 43 +++++----- .../modules/system/rest/RoleController.java | 65 ++++++++------- .../modules/system/rest/UserController.java | 82 +++++++++---------- .../modules/system/service/DeptService.java | 45 ---------- .../system/service/DictDetailService.java | 28 ------- .../modules/system/service/DictService.java | 33 -------- .../modules/system/service/JobService.java | 32 -------- .../modules/system/service/MenuService.java | 66 +-------------- .../system/service/PermissionService.java | 50 ----------- .../modules/system/service/RoleService.java | 68 --------------- .../modules/system/service/UserService.java | 53 ------------ .../modules/system/service/dto/DeptDTO.java | 12 +-- .../system/service/dto/DeptSmallDTO.java | 6 -- .../modules/system/service/dto/DictDTO.java | 6 -- .../system/service/dto/DictDetailDTO.java | 9 -- .../modules/system/service/dto/JobDTO.java | 15 ---- .../system/service/dto/JobSmallDTO.java | 6 -- .../system/service/impl/DeptServiceImpl.java | 42 ++++++---- .../service/impl/DictDetailServiceImpl.java | 32 +++++--- .../system/service/impl/DictServiceImpl.java | 33 +++++--- .../system/service/impl/JobServiceImpl.java | 37 +++++---- .../system/service/impl/MenuServiceImpl.java | 61 ++++++++------ .../service/impl/PermissionServiceImpl.java | 48 +++++++---- .../system/service/impl/RoleServiceImpl.java | 48 +++++++---- .../system/service/impl/UserServiceImpl.java | 57 +++++++------ .../system/service/mapper/DeptMapper.java | 2 +- .../service/mapper/DeptSmallMapper.java | 2 +- .../service/mapper/DictDetailMapper.java | 2 +- .../system/service/mapper/DictMapper.java | 2 +- .../system/service/mapper/JobSmallMapper.java | 2 +- .../system/service/mapper/MenuMapper.java | 2 +- .../service/mapper/RoleSmallMapper.java | 2 +- .../main/resources/config/application-dev.yml | 5 -- .../resources/config/application-prod.yml | 5 -- .../template/generator/admin/Controller.ftl | 30 +++---- .../template/generator/admin/Mapper.ftl | 2 +- .../generator/admin/QueryCriteria.ftl | 4 +- .../template/generator/admin/Repository.ftl | 7 +- .../template/generator/admin/Service.ftl | 37 ++------- .../template/generator/admin/ServiceImpl.ftl | 34 +++++--- .../EladminSystemApplicationTests.java | 1 - .../main/java/me/zhengjie/domain/Picture.java | 3 + .../repository/PictureRepository.java | 4 + .../me/zhengjie/rest/AliPayController.java | 22 ++--- .../me/zhengjie/rest/EmailController.java | 6 +- .../zhengjie/rest/LocalStorageController.java | 12 +-- .../me/zhengjie/rest/PictureController.java | 10 +-- .../me/zhengjie/rest/QiniuController.java | 34 ++++---- .../rest/VerificationCodeController.java | 20 ++--- .../me/zhengjie/service/AlipayService.java | 3 - .../me/zhengjie/service/EmailService.java | 6 -- .../zhengjie/service/LocalStorageService.java | 45 ---------- .../me/zhengjie/service/PictureService.java | 35 +------- .../me/zhengjie/service/QiNiuService.java | 33 ++------ .../service/impl/AlipayServiceImpl.java | 18 ++-- .../service/impl/EmailServiceImpl.java | 6 ++ .../service/impl/LocalStorageServiceImpl.java | 34 +++++--- .../service/impl/PictureServiceImpl.java | 29 ++++--- .../service/impl/QiNiuServiceImpl.java | 28 +++++-- .../impl/VerificationCodeServiceImpl.java | 13 +-- .../me/zhengjie/utils/AliPayStatusEnum.java | 12 --- .../java/me/zhengjie/utils/AlipayUtils.java | 10 +-- .../java/me/zhengjie/utils/QiNiuUtil.java | 4 + 146 files changed, 1197 insertions(+), 1782 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/annotation/Query.java b/eladmin-common/src/main/java/me/zhengjie/annotation/Query.java index 2375c266..0a583390 100644 --- a/eladmin-common/src/main/java/me/zhengjie/annotation/Query.java +++ b/eladmin-common/src/main/java/me/zhengjie/annotation/Query.java @@ -13,9 +13,9 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) public @interface Query { - /** Dong ZhaoYang 2017/8/7 基本对象的属性名 */ + // Dong ZhaoYang 2017/8/7 基本对象的属性名 String propName() default ""; - /** Dong ZhaoYang 2017/8/7 查询方式 */ + // Dong ZhaoYang 2017/8/7 查询方式 Type type() default Type.EQUAL; /** diff --git a/eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java b/eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java index 23f7e9d7..9465aec3 100644 --- a/eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java +++ b/eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java @@ -35,7 +35,7 @@ public class FastJsonRedisSerializer implements RedisSerializer { return null; } String str = new String(bytes, StandardCharsets.UTF_8); - return (T) JSON.parseObject(str, clazz); + return JSON.parseObject(str, clazz); } } diff --git a/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java b/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java index d451bea5..d587731e 100644 --- a/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java @@ -35,7 +35,7 @@ public class SwaggerConfig { @Bean public Docket createRestApi() { ParameterBuilder ticketPar = new ParameterBuilder(); - List pars = new ArrayList(); + List pars = new ArrayList<>(); ticketPar.name(tokenHeader).description("token") .modelRef(new ModelRef("string")) .parameterType("header") diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java index a1d49c3f..1cf6fa16 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java @@ -19,9 +19,6 @@ public class EncryptUtils { /** * 对称加密 - * @param source - * @return - * @throws Exception */ public static String desEncrypt(String source) throws Exception { if (source == null || source.length() == 0){ diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java index 13579529..ae526fda 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java @@ -11,6 +11,7 @@ import javax.activation.MimetypesFileTypeMap; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.*; +import java.security.MessageDigest; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Date; @@ -92,7 +93,7 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { * 文件大小转换 */ public static String getSize(long size){ - String resultSize = ""; + String resultSize; if (size / GB >= 1) { //如果当前Byte的值大于等于1GB resultSize = DF.format(size / (float) GB) + "GB "; @@ -117,7 +118,7 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { return file; } OutputStream os = new FileOutputStream(file); - int bytesRead = 0; + int bytesRead; byte[] buffer = new byte[8192]; while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); @@ -144,7 +145,6 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); } - String d = dest.getPath(); file.transferTo(dest);// 文件写入 return dest; } catch (Exception e) { @@ -155,7 +155,7 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { public static String fileToBase64(File file) throws Exception { FileInputStream inputFile = new FileInputStream(file); - String base64 =null; + String base64; byte[] buffer = new byte[(int)file.length()]; inputFile.read(buffer); inputFile.close(); @@ -210,4 +210,64 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { throw new BadRequestException("文件超出规定大小"); } } + + /** + * 判断两个文件是否相同 + */ + public static boolean check(File file1, File file2) { + String img1Md5 = getMD5(file1); + String img2Md5 = getMD5(file2); + return img1Md5.equals(img2Md5); + } + + /** + * 判断两个文件是否相同 + */ + public static boolean check(String file1Md5, String file2Md5) { + return file1Md5.equals(file2Md5); + } + + private static byte[] getByte(File file) { + // 得到文件长度 + byte[] b = new byte[(int) file.length()]; + try { + InputStream in = new FileInputStream(file); + try { + in.read(b); + } catch (IOException e) { + e.printStackTrace(); + } + } catch (FileNotFoundException e) { + e.printStackTrace(); + return null; + } + return b; + } + + private static String getMD5(byte[] bytes) { + // 16进制字符 + char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; + try { + MessageDigest mdTemp = MessageDigest.getInstance("MD5"); + mdTemp.update(bytes); + byte[] md = mdTemp.digest(); + int j = md.length; + char[] str = new char[j * 2]; + int k = 0; + // 移位 输出字符串 + for (byte byte0 : md) { + str[k++] = hexDigits[byte0 >>> 4 & 0xf]; + str[k++] = hexDigits[byte0 & 0xf]; + } + return new String(str); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static String getMD5(File file) { + return getMD5(getByte(file)); + } + } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java b/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java index c467c47c..fa668408 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java @@ -112,7 +112,8 @@ public class QueryHelp { } catch (Exception e) { log.error(e.getMessage(), e); } - return cb.and(list.toArray(new Predicate[list.size()])); + int size = list.size(); + return cb.and(list.toArray(new Predicate[size])); } @SuppressWarnings("unchecked") @@ -124,8 +125,7 @@ public class QueryHelp { } } - @SuppressWarnings("unchecked") - public static boolean isBlank(final CharSequence cs) { + private static boolean isBlank(final CharSequence cs) { int strLen; if (cs == null || (strLen = cs.length()) == 0) { return true; @@ -138,7 +138,6 @@ public class QueryHelp { return true; } - @SuppressWarnings("unchecked") private static List getAllFields(Class clazz, List fields) { if (clazz != null) { fields.addAll(Arrays.asList(clazz.getDeclaredFields())); diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java index 1b0fc75f..0799c968 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java @@ -13,7 +13,7 @@ import org.springframework.security.core.userdetails.UserDetails; public class SecurityUtils { public static UserDetails getUserDetails() { - UserDetails userDetails = null; + UserDetails userDetails; try { userDetails = (UserDetails) org.springframework.security.core.context.SecurityContextHolder.getContext().getAuthentication().getPrincipal(); } catch (Exception e) { diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java b/eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java index 7e1af48e..fd255348 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java @@ -7,7 +7,7 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; /** - * @author + * @author Jie * @date 2019-01-07 */ @Slf4j @@ -15,14 +15,6 @@ public class SpringContextHolder implements ApplicationContextAware, DisposableB private static ApplicationContext applicationContext = null; - /** - * 取得存储在静态变量中的ApplicationContext. - */ - public static ApplicationContext getApplicationContext() { - assertContextInjected(); - return applicationContext; - } - /** * 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型. */ @@ -53,14 +45,14 @@ public class SpringContextHolder implements ApplicationContextAware, DisposableB /** * 清除SpringContextHolder中的ApplicationContext为Null. */ - public static void clearHolder() { + private static void clearHolder() { log.debug("清除SpringContextHolder中的ApplicationContext:" + applicationContext); applicationContext = null; } @Override - public void destroy() throws Exception { + public void destroy(){ SpringContextHolder.clearHolder(); } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java index 3d6763ed..e5f3c587 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java @@ -18,25 +18,6 @@ import java.util.Date; public class StringUtils extends org.apache.commons.lang3.StringUtils { private static final char SEPARATOR = '_'; - private static final String CHARSET_NAME = "UTF-8"; - - /** - * 是否包含字符串 - * - * @param str 验证字符串 - * @param strs 字符串组 - * @return 包含返回true - */ - static boolean inString(String str, String... strs) { - if (str != null) { - for (String s : strs) { - if (str.equals(trim(s))) { - return true; - } - } - } - return false; - } /** * 驼峰命名法工具 @@ -151,9 +132,9 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { DbConfig config = new DbConfig(); File file = FileUtil.inputStreamToFile(new ClassPathResource(path).getStream(), name); DbSearcher searcher = new DbSearcher(config, file.getPath()); - Method method = null; + Method method; method = searcher.getClass().getMethod("btreeSearch", String.class); - DataBlock dataBlock = null; + DataBlock dataBlock; dataBlock = (DataBlock) method.invoke(searcher, ip); String address = dataBlock.getRegion().replace("0|",""); if(address.charAt(address.length()-1) == '|'){ diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/TranslatorUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/TranslatorUtil.java index 623e90b0..7a45a810 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/TranslatorUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/TranslatorUtil.java @@ -36,7 +36,7 @@ public class TranslatorUtil { } } - private static String parseResult(String inputJson) throws Exception { + private static String parseResult(String inputJson){ JSONArray jsonArray2 = (JSONArray) new JSONArray(inputJson).get(0); StringBuilder result = new StringBuilder(); for (Object o : jsonArray2) { diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java index 940a1143..7d49adfa 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java @@ -1,7 +1,7 @@ package me.zhengjie.utils; +import cn.hutool.core.util.ObjectUtil; import me.zhengjie.exception.BadRequestException; -import java.util.Optional; /** * 验证工具 @@ -13,11 +13,9 @@ public class ValidationUtil{ /** * 验证空 */ - public static void isNull(Optional optional, String entity,String parameter , Object value){ - if(!optional.isPresent()){ - String msg = entity - + " 不存在 " - +"{ "+ parameter +":"+ value.toString() +" }"; + public static void isNull(Object obj, String entity, String parameter , Object value){ + if(ObjectUtil.isNull(obj)){ + String msg = entity + " 不存在: "+ parameter +" is "+ value; throw new BadRequestException(msg); } } diff --git a/eladmin-common/src/test/java/me/zhengjie/utils/StringUtilsTest.java b/eladmin-common/src/test/java/me/zhengjie/utils/StringUtilsTest.java index f18fb1d9..6811b9cc 100644 --- a/eladmin-common/src/test/java/me/zhengjie/utils/StringUtilsTest.java +++ b/eladmin-common/src/test/java/me/zhengjie/utils/StringUtilsTest.java @@ -11,12 +11,6 @@ import static org.junit.Assert.*; public class StringUtilsTest { - @Test - public void testInString() { - assertTrue(inString("?", "?")); - assertFalse(inString("?", new String[]{})); - } - @Test public void testToCamelCase() { assertNull(toCamelCase(null)); diff --git a/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java b/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java index 1f79a911..30790e46 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java +++ b/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java @@ -16,26 +16,26 @@ public class GenConfig { @Id 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 String prefix; - /** 是否覆盖 **/ + // 是否覆盖 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 index 5a8475a2..a22470aa 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/domain/vo/ColumnInfo.java +++ b/eladmin-generator/src/main/java/me/zhengjie/domain/vo/ColumnInfo.java @@ -14,27 +14,27 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class ColumnInfo { - /** 数据库字段名称 **/ + // 数据库字段名称 private Object columnName; - /** 允许空值 **/ + // 允许空值 private Object isNullable; - /** 数据库字段类型 **/ + // 数据库字段类型 private Object columnType; - /** 数据库字段注释 **/ + // 数据库字段注释 private Object columnComment; - /** 数据库字段键类型 **/ + // 数据库字段键类型 private Object columnKey; - /** 额外的参数 **/ + // 额外的参数 private Object extra; - /** 查询 1:模糊 2:精确 **/ + // 查询 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 index 92712d75..b1b6ba4e 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java +++ b/eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java @@ -14,10 +14,10 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class TableInfo { - /** 表名称 **/ + // 表名称 private Object tableName; - /** 创建日期 **/ + // 创建日期 private Object createTime; // 数据库引擎 diff --git a/eladmin-generator/src/main/java/me/zhengjie/rest/GenConfigController.java b/eladmin-generator/src/main/java/me/zhengjie/rest/GenConfigController.java index 19c092f8..0650b959 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/rest/GenConfigController.java +++ b/eladmin-generator/src/main/java/me/zhengjie/rest/GenConfigController.java @@ -1,8 +1,9 @@ package me.zhengjie.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; 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; @@ -13,23 +14,25 @@ import org.springframework.web.bind.annotation.*; * @date 2019-01-14 */ @RestController -@RequestMapping("api") +@RequestMapping("/api/genConfig") +@Api(tags = "系统:代码生成器配置管理") public class GenConfigController { - @Autowired - private GenConfigService genConfigService; + private final GenConfigService genConfigService; - /** - * 查询生成器配置 - * @return - */ - @GetMapping(value = "/genConfig") - public ResponseEntity get(){ - return new ResponseEntity(genConfigService.find(), HttpStatus.OK); + public GenConfigController(GenConfigService genConfigService) { + this.genConfigService = genConfigService; } - @PutMapping(value = "/genConfig") + @ApiOperation("查询") + @GetMapping + public ResponseEntity get(){ + return new ResponseEntity<>(genConfigService.find(), HttpStatus.OK); + } + + @ApiOperation("修改") + @PutMapping public ResponseEntity emailConfig(@Validated @RequestBody GenConfig genConfig){ - return new ResponseEntity(genConfigService.update(genConfig),HttpStatus.OK); + 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 index 65158981..3e10323f 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java +++ b/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java @@ -1,11 +1,12 @@ package me.zhengjie.rest; import cn.hutool.core.util.PageUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; 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; @@ -17,49 +18,39 @@ import java.util.List; * @date 2019-01-02 */ @RestController -@RequestMapping("api") +@RequestMapping("/api/generator") +@Api(tags = "系统:代码生成管理") public class GeneratorController { - @Autowired - private GeneratorService generatorService; + private final GeneratorService generatorService; - @Autowired - private GenConfigService genConfigService; + private final GenConfigService genConfigService; @Value("${generator.enabled}") private Boolean generatorEnabled; - /** - * 查询数据库元数据 - * @param name - * @param page - * @param size - * @return - */ - @GetMapping(value = "/generator/tables") + public GeneratorController(GeneratorService generatorService, GenConfigService genConfigService) { + this.generatorService = generatorService; + this.genConfigService = genConfigService; + } + + @ApiOperation("查询数据库元数据") + @GetMapping(value = "/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); + return new ResponseEntity<>(generatorService.getTables(name,startEnd), HttpStatus.OK); } - /** - * 查询表内元数据 - * @param tableName - * @return - */ - @GetMapping(value = "/generator/columns") + @ApiOperation("查询表内元数据") + @GetMapping(value = "/columns") public ResponseEntity getTables(@RequestParam String tableName){ - return new ResponseEntity(generatorService.getColumns(tableName), HttpStatus.OK); + return new ResponseEntity<>(generatorService.getColumns(tableName), HttpStatus.OK); } - /** - * 生成代码 - * @param columnInfos - * @return - */ - @PostMapping(value = "/generator") + @ApiOperation("生成代码") + @PostMapping public ResponseEntity generator(@RequestBody List columnInfos, @RequestParam String tableName){ if(!generatorEnabled){ throw new BadRequestException("此环境不允许生成代码!"); diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java b/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java index 34276545..e47fca92 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java @@ -10,21 +10,9 @@ import org.springframework.cache.annotation.Cacheable; * @author Zheng Jie * @date 2019-01-14 */ -@CacheConfig(cacheNames = "genConfig") public interface GenConfigService { - /** - * find - * @return - */ - @Cacheable(key = "'1'") GenConfig find(); - /** - * update - * @param genConfig - * @return - */ - @CacheEvict(allEntries = true) 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 index 8b9158a9..7ddb7f1e 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java @@ -12,24 +12,24 @@ public interface GeneratorService { /** * 查询数据库元数据 - * @param name - * @param startEnd - * @return + * @param name 表名 + * @param startEnd 分页参数 + * @return / */ Object getTables(String name, int[] startEnd); /** * 得到数据表的元数据 - * @param name - * @return + * @param name 表名 + * @return / */ Object getColumns(String name); /** * 生成代码 - * @param columnInfos - * @param genConfig - * @param tableName + * @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 index 165cd5a1..4dfa354c 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java @@ -3,9 +3,10 @@ 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.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; - import java.io.File; import java.util.Optional; @@ -14,35 +15,37 @@ import java.util.Optional; * @date 2019-01-14 */ @Service +@CacheConfig(cacheNames = "genConfig") public class GenConfigServiceImpl implements GenConfigService { - @Autowired - private GenConfigRepository genConfigRepository; + private final GenConfigRepository genConfigRepository; - @Override - public GenConfig find() { - Optional genConfig = genConfigRepository.findById(1L); - if(genConfig.isPresent()){ - return genConfig.get(); - } else { - return new GenConfig(); - } + public GenConfigServiceImpl(GenConfigRepository genConfigRepository) { + this.genConfigRepository = genConfigRepository; } @Override + @Cacheable(key = "'1'") + public GenConfig find() { + Optional genConfig = genConfigRepository.findById(1L); + return genConfig.orElseGet(GenConfig::new); + } + + @Override + @CacheEvict(allEntries = true) public GenConfig update(GenConfig genConfig) { genConfig.setId(1L); // 自动设置Api路径,注释掉前需要同步取消前端的注释 String separator = File.separator; - String[] paths = null; + String[] paths; if (separator.equals("\\")) { paths = genConfig.getPath().split("\\\\"); } else paths = genConfig.getPath().split(File.separator); - StringBuffer api = new StringBuffer(); - for (int i = 0; i < paths.length; i++) { - api.append(paths[i]); + StringBuilder api = new StringBuilder(); + for (String path : paths) { + api.append(path); api.append(separator); - if(paths[i].equals("src")){ + if (path.equals("src")) { api.append("api"); break; } 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 index 49e4e1c5..1decf842 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java @@ -37,10 +37,11 @@ public class GeneratorServiceImpl implements GeneratorService { query.setFirstResult(startEnd[0]); query.setMaxResults(startEnd[1]-startEnd[0]); query.setParameter(1, StringUtils.isNotBlank(name) ? ("%" + name + "%") : "%%"); - List result = query.getResultList(); + List result = query.getResultList(); List tableInfos = new ArrayList<>(); - for (Object[] obj : result) { - tableInfos.add(new TableInfo(obj[0],obj[1],obj[2],obj[3], ObjectUtil.isNotEmpty(obj[4])? obj[4] : "-")); + for (Object obj : result) { + Object[] arr = (Object[]) obj; + tableInfos.add(new TableInfo(arr[0],arr[1],arr[2],arr[3], ObjectUtil.isNotEmpty(arr[4])? arr[4] : "-")); } Query query1 = em.createNativeQuery("SELECT COUNT(*) from information_schema.tables where table_schema = (select database())"); Object totalElements = query1.getSingleResult(); @@ -54,10 +55,11 @@ public class GeneratorServiceImpl implements GeneratorService { "where table_name = ? and table_schema = (select database()) order by ordinal_position"; Query query = em.createNativeQuery(sql); query.setParameter(1, StringUtils.isNotBlank(name) ? name : null); - List result = query.getResultList(); + 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],obj[5],null,"true")); + for (Object obj : result) { + Object[] arr = (Object[]) obj; + columnInfos.add(new ColumnInfo(arr[0],arr[1],arr[2],arr[3],arr[4],arr[5],null,"true")); } return PageUtil.toPage(columnInfos,columnInfos.size()); } diff --git a/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java b/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java index 66026d94..9a119f2a 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java +++ b/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java @@ -12,11 +12,12 @@ public class ColUtil { /** * 转换mysql数据类型为java数据类型 - * @param type - * @return + * @param type 数据库字段类型 + * @return String */ - public static String cloToJava(String type){ + static String cloToJava(String type){ Configuration config = getConfig(); + assert config != null; return config.getString(type,"unknowType"); } diff --git a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java index ca198b31..2fb826c5 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java +++ b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java @@ -34,9 +34,9 @@ public class GenUtil { /** * 获取后端代码模板名称 - * @return + * @return List */ - public static List getAdminTemplateNames() { + private static List getAdminTemplateNames() { List templateNames = new ArrayList<>(); templateNames.add("Entity"); templateNames.add("Dto"); @@ -51,9 +51,9 @@ public class GenUtil { /** * 获取前端代码模板名称 - * @return + * @return List */ - public static List getFrontTemplateNames() { + private static List getFrontTemplateNames() { List templateNames = new ArrayList<>(); templateNames.add("api"); templateNames.add("index"); @@ -67,7 +67,7 @@ public class GenUtil { * @param genConfig 生成代码的参数配置,如包路径,作者 */ public static void generatorCode(List columnInfos, GenConfig genConfig, String tableName) throws IOException { - Map map = new HashMap(); + Map map = new HashMap<>(); map.put("package",genConfig.getPack()); map.put("moduleName",genConfig.getModuleName()); map.put("author",genConfig.getAuthor()); @@ -85,6 +85,8 @@ public class GenUtil { map.put("upperCaseClassName", className.toUpperCase()); map.put("changeClassName", changeClassName); map.put("hasTimestamp",false); + map.put("queryHasTimestamp",false); + map.put("queryHasBigDecimal",false); map.put("hasBigDecimal",false); map.put("hasQuery",false); map.put("auto",false); @@ -92,7 +94,7 @@ public class GenUtil { List> columns = new ArrayList<>(); List> queryColumns = new ArrayList<>(); for (ColumnInfo column : columnInfos) { - Map listMap = new HashMap(); + Map listMap = new HashMap<>(); listMap.put("columnComment",column.getColumnComment()); listMap.put("columnKey",column.getColumnKey()); @@ -124,6 +126,12 @@ public class GenUtil { if(!StringUtils.isBlank(column.getColumnQuery())){ listMap.put("columnQuery",column.getColumnQuery()); map.put("hasQuery",true); + if(TIMESTAMP.equals(colType)){ + map.put("queryHasTimestamp",true); + } + if(BIGDECIMAL.equals(colType)){ + map.put("queryHasBigDecimal",true); + } queryColumns.add(listMap); } columns.add(listMap); @@ -138,6 +146,7 @@ public class GenUtil { Template template = engine.getTemplate("generator/admin/"+templateName+".ftl"); String filePath = getAdminFilePath(templateName,genConfig,className); + assert filePath != null; File file = new File(filePath); // 如果非覆盖生成 @@ -154,6 +163,7 @@ public class GenUtil { Template template = engine.getTemplate("generator/front/"+templateName+".ftl"); String filePath = getFrontFilePath(templateName,genConfig,map.get("changeClassName").toString()); + assert filePath != null; File file = new File(filePath); // 如果非覆盖生成 @@ -168,7 +178,7 @@ public class GenUtil { /** * 定义后端文件路径以及名称 */ - public static String getAdminFilePath(String templateName, GenConfig genConfig, String className) { + private 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())) { @@ -213,7 +223,7 @@ public class GenUtil { /** * 定义前端文件路径以及名称 */ - public static String getFrontFilePath(String templateName, GenConfig genConfig, String apiName) { + private static String getFrontFilePath(String templateName, GenConfig genConfig, String apiName) { String path = genConfig.getPath(); if ("api".equals(templateName)) { @@ -230,18 +240,17 @@ public class GenUtil { return null; } - public static void genFile(File file,Template template,Map map) throws IOException { + private 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) { + } catch (TemplateException | IOException e) { throw new RuntimeException(e); } finally { + assert writer != null; writer.close(); } } diff --git a/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java index 1fbf7cfa..ca2ad5b6 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java +++ b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java @@ -48,7 +48,7 @@ public class LogAspect { */ @Around("logPointcut()") public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable { - Object result = null; + Object result; currentTime = System.currentTimeMillis(); result = joinPoint.proceed(); Log log = new Log("INFO",System.currentTimeMillis() - currentTime); diff --git a/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java b/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java index a7146c01..564ab941 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java +++ b/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java @@ -21,56 +21,38 @@ public class Log implements Serializable { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - /** - * 操作用户 - */ + // 操作用户 private String username; - /** - * 描述 - */ + // 描述 private String description; - /** - * 方法名 - */ + // 方法名 private String method; - /** - * 参数 - */ + // 参数 @Column(columnDefinition = "text") private String params; - /** - * 日志类型 - */ + // 日志类型 @Column(name = "log_type") private String logType; - /** - * 请求ip - */ + // 请求ip @Column(name = "request_ip") private String requestIp; @Column(name = "address") private String address; - /** - * 请求耗时 - */ + // 请求耗时 private Long time; - /** - * 异常详细 - */ + // 异常详细 @Column(name = "exception_detail", columnDefinition = "text") private byte[] exceptionDetail; - /** - * 创建日期 - */ + // 创建日期 @CreationTimestamp @Column(name = "create_time") private Timestamp createTime; diff --git a/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java b/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java index e557f8c6..903386e3 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java +++ b/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java @@ -11,22 +11,14 @@ import org.springframework.stereotype.Repository; * @date 2018-11-24 */ @Repository -public interface LogRepository extends JpaRepository, JpaSpecificationExecutor { +public interface LogRepository extends JpaRepository, JpaSpecificationExecutor { /** * 获取一个时间段的IP记录 - * @param date1 - * @param date2 - * @return */ @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); - /** - * findExceptionById - * @param id - * @return - */ - @Query(value = "select exception_detail FROM log where id = ?1",nativeQuery = true) - String findExceptionById(Long id); + @Query(value = "select l FROM Log l where l.id = ?1") + Log findExceptionById(Long id); } diff --git a/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java b/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java index 051c071d..67312268 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java +++ b/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java @@ -1,9 +1,10 @@ package me.zhengjie.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.service.LogService; import me.zhengjie.service.dto.LogQueryCriteria; import me.zhengjie.utils.SecurityUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -18,36 +19,44 @@ import org.springframework.web.bind.annotation.RestController; * @date 2018-11-24 */ @RestController -@RequestMapping("api") +@RequestMapping("/api/logs") +@Api(tags = "监控:日志管理") public class LogController { - @Autowired - private LogService logService; + private final LogService logService; - @GetMapping(value = "/logs") + public LogController(LogService logService) { + this.logService = logService; + } + + @GetMapping + @ApiOperation("日志查询") @PreAuthorize("hasAnyRole('ADMIN')") public ResponseEntity getLogs(LogQueryCriteria criteria, Pageable pageable){ criteria.setLogType("INFO"); - return new ResponseEntity(logService.queryAll(criteria,pageable), HttpStatus.OK); + return new ResponseEntity<>(logService.queryAll(criteria,pageable), HttpStatus.OK); } - @GetMapping(value = "/logs/user") + @GetMapping(value = "/user") + @ApiOperation("用户日志查询") public ResponseEntity getUserLogs(LogQueryCriteria criteria, Pageable pageable){ criteria.setLogType("INFO"); criteria.setBlurry(SecurityUtils.getUsername()); - return new ResponseEntity(logService.queryAllByUser(criteria,pageable), HttpStatus.OK); + return new ResponseEntity<>(logService.queryAllByUser(criteria,pageable), HttpStatus.OK); } - @GetMapping(value = "/logs/error") + @GetMapping(value = "/error") + @ApiOperation("错误日志查询") @PreAuthorize("hasAnyRole('ADMIN')") public ResponseEntity getErrorLogs(LogQueryCriteria criteria, Pageable pageable){ criteria.setLogType("ERROR"); - return new ResponseEntity(logService.queryAll(criteria,pageable), HttpStatus.OK); + return new ResponseEntity<>(logService.queryAll(criteria,pageable), HttpStatus.OK); } - @GetMapping(value = "/logs/error/{id}") + @GetMapping(value = "/error/{id}") + @ApiOperation("日志异常详情查询") @PreAuthorize("hasAnyRole('ADMIN')") public ResponseEntity getErrorLogs(@PathVariable Long id){ - return new ResponseEntity(logService.findByErrDetail(id), HttpStatus.OK); + return new ResponseEntity<>(logService.findByErrDetail(id), HttpStatus.OK); } } diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java b/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java index 3eb69de9..b5e52732 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java @@ -12,36 +12,17 @@ import org.springframework.scheduling.annotation.Async; */ public interface LogService { - /** - * queryAll - * @param criteria - * @param pageable - * @return - */ Object queryAll(LogQueryCriteria criteria, Pageable pageable); - /** - * queryAllByUser - * @param criteria - * @param pageable - * @return - */ Object queryAllByUser(LogQueryCriteria criteria, Pageable pageable); - /** - * 新增日志 - * @param username - * @param ip - * @param joinPoint - * @param log - */ @Async void save(String username, String ip, ProceedingJoinPoint joinPoint, Log log); /** * 查询异常详情 - * @param id - * @return + * @param id 日志ID + * @return Object */ Object findByErrDetail(Long id); } diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogErrorDTO.java b/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogErrorDTO.java index f23ae95f..7aaa54b2 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogErrorDTO.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogErrorDTO.java @@ -13,36 +13,24 @@ public class LogErrorDTO implements Serializable { private Long id; - /** - * 操作用户 - */ + // 操作用户 private String username; - /** - * 描述 - */ + // 描述 private String description; - /** - * 方法名 - */ + // 方法名 private String method; - /** - * 参数 - */ + // 参数 private String params; - /** - * 请求ip - */ + // 请求ip private String requestIp; private String address; - /** - * 创建日期 - */ + // 创建日期 private Timestamp createTime; } \ No newline at end of file diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogSmallDTO.java b/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogSmallDTO.java index 33b6abfd..5d11c347 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogSmallDTO.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogSmallDTO.java @@ -1,7 +1,6 @@ package me.zhengjie.service.dto; import lombok.Data; - import java.io.Serializable; import java.sql.Timestamp; @@ -12,25 +11,17 @@ import java.sql.Timestamp; @Data public class LogSmallDTO implements Serializable { - /** - * 描述 - */ + // 描述 private String description; - /** - * 请求ip - */ + // 请求ip private String requestIp; - /** - * 请求耗时 - */ + // 请求耗时 private Long time; private String address; - /** - * 创建日期 - */ + // 创建日期 private Timestamp createTime; } diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java b/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java index 4d39206f..66bff12f 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java @@ -13,7 +13,6 @@ import me.zhengjie.utils.QueryHelp; 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.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -29,16 +28,17 @@ import java.lang.reflect.Method; @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class LogServiceImpl implements LogService { - @Autowired - private LogRepository logRepository; + private final LogRepository logRepository; - @Autowired - private LogErrorMapper logErrorMapper; + private final LogErrorMapper logErrorMapper; - @Autowired - private LogSmallMapper logSmallMapper; + private final LogSmallMapper logSmallMapper; - private final String LOGINPATH = "login"; + public LogServiceImpl(LogRepository logRepository, LogErrorMapper logErrorMapper, LogSmallMapper logSmallMapper) { + this.logRepository = logRepository; + this.logErrorMapper = logErrorMapper; + this.logSmallMapper = logSmallMapper; + } @Override public Object queryAll(LogQueryCriteria criteria, Pageable pageable){ @@ -63,32 +63,31 @@ public class LogServiceImpl implements LogService { Method method = signature.getMethod(); me.zhengjie.aop.log.Log aopLog = method.getAnnotation(me.zhengjie.aop.log.Log.class); - // 描述 - if (log != null) { - log.setDescription(aopLog.value()); - } - // 方法路径 String methodName = joinPoint.getTarget().getClass().getName()+"."+signature.getName()+"()"; - String params = "{"; + StringBuilder params = new StringBuilder("{"); //参数值 Object[] argValues = joinPoint.getArgs(); //参数名称 String[] argNames = ((MethodSignature)joinPoint.getSignature()).getParameterNames(); if(argValues != null){ for (int i = 0; i < argValues.length; i++) { - params += " " + argNames[i] + ": " + argValues[i]; + params.append(" ").append(argNames[i]).append(": ").append(argValues[i]); } } - - // 获取IP地址 + // 描述 + if (log != null) { + log.setDescription(aopLog.value()); + } + assert log != null; log.setRequestIp(ip); + String LOGINPATH = "login"; if(LOGINPATH.equals(signature.getName())){ try { - JSONObject jsonObject = new JSONObject(argValues[0]); - username = jsonObject.get("username").toString(); + assert argValues != null; + username = new JSONObject(argValues[0]).get("username").toString(); }catch (Exception e){ e.printStackTrace(); } @@ -96,12 +95,12 @@ public class LogServiceImpl implements LogService { log.setAddress(StringUtils.getCityInfo(log.getRequestIp())); log.setMethod(methodName); log.setUsername(username); - log.setParams(params + " }"); + log.setParams(params.toString() + " }"); logRepository.save(log); } @Override public Object findByErrDetail(Long id) { - return Dict.create().set("exception",logRepository.findExceptionById(id)); + return Dict.create().set("exception",logRepository.findExceptionById(id).getExceptionDetail()); } } diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogErrorMapper.java b/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogErrorMapper.java index a2fc4b87..f4ca6170 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogErrorMapper.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogErrorMapper.java @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2019-5-22 */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface LogErrorMapper extends EntityMapper { } \ No newline at end of file diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogSmallMapper.java b/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogSmallMapper.java index 8c6d2c63..4d5d200f 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogSmallMapper.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogSmallMapper.java @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2019-5-22 */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface LogSmallMapper extends EntityMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/config/DataScope.java b/eladmin-system/src/main/java/me/zhengjie/config/DataScope.java index 0ae0ff07..13daa454 100644 --- a/eladmin-system/src/main/java/me/zhengjie/config/DataScope.java +++ b/eladmin-system/src/main/java/me/zhengjie/config/DataScope.java @@ -25,14 +25,17 @@ public class DataScope { private final String[] scopeType = {"全部","本级","自定义"}; - @Autowired - private UserService userService; + private final UserService userService; - @Autowired - private RoleService roleService; + private final RoleService roleService; - @Autowired - private DeptService deptService; + private final DeptService deptService; + + public DataScope(UserService userService, RoleService roleService, DeptService deptService) { + this.userService = userService; + this.roleService = roleService; + this.deptService = deptService; + } public Set getDeptIds() { @@ -76,7 +79,7 @@ public class DataScope { deptList.forEach(dept -> { if (dept!=null && dept.getEnabled()){ List depts = deptService.findByPid(dept.getId()); - if(deptList!=null && deptList.size()!=0){ + if(deptList.size() != 0){ list.addAll(getDeptChildren(depts)); } list.add(dept.getId()); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/VisitsInitialization.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/VisitsInitialization.java index f44d72ad..236a9c3c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/VisitsInitialization.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/VisitsInitialization.java @@ -1,7 +1,6 @@ package me.zhengjie.modules.monitor.config; import me.zhengjie.modules.monitor.service.VisitsService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; @@ -13,8 +12,11 @@ import org.springframework.stereotype.Component; @Component public class VisitsInitialization implements ApplicationRunner { - @Autowired - private VisitsService visitsService; + private final VisitsService visitsService; + + public VisitsInitialization(VisitsService visitsService) { + this.visitsService = visitsService; + } @Override public void run(ApplicationArguments args) throws Exception { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/repository/VisitsRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/repository/VisitsRepository.java index 7a41c8f9..8c13338f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/repository/VisitsRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/repository/VisitsRepository.java @@ -4,7 +4,6 @@ import me.zhengjie.modules.monitor.domain.Visits; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; - import java.util.List; /** @@ -16,18 +15,17 @@ public interface VisitsRepository extends JpaRepository { /** * findByDate - * @param date - * @return + * @param date 日期 + * @return Visits */ Visits findByDate(String date); /** * 获得一个时间段的记录 - * @param date1 - * @param date2 - * @return + * @param date1 日期1 + * @param date2 日期2 + * @return List */ - @Query(value = "select * FROM visits where " + - "create_time between ?1 and ?2",nativeQuery = true) + @Query(value = "select * FROM visits where create_time between ?1 and ?2",nativeQuery = true) List findAllVisits(String date1, String date2); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/LimitController.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/LimitController.java index 3a742cac..00baee19 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/LimitController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/LimitController.java @@ -1,5 +1,7 @@ package me.zhengjie.modules.monitor.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.annotation.Limit; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -12,15 +14,17 @@ import java.util.concurrent.atomic.AtomicInteger; * 接口限流测试类 */ @RestController -@RequestMapping("api") +@RequestMapping("/api/limit") +@Api(tags = "系统:限流测试管理") public class LimitController { private static final AtomicInteger ATOMIC_INTEGER = new AtomicInteger(); /** * 测试限流注解,下面配置说明该接口 60秒内最多只能访问 10次,保存到redis的键名为 limit_test, */ + @GetMapping + @ApiOperation("测试") @Limit(key = "test", period = 60, count = 10, name = "testLimit", prefix = "limit") - @GetMapping("/limit") public int testLimit() { return ATOMIC_INTEGER.incrementAndGet(); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java index f1cca13c..724cb27f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java @@ -1,14 +1,14 @@ package me.zhengjie.modules.monitor.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; 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; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; /** @@ -16,21 +16,27 @@ import org.springframework.web.bind.annotation.*; * @date 2018-12-10 */ @RestController -@RequestMapping("api") +@RequestMapping("/api/redis") +@Api(tags = "系统:Redis缓存管理") public class RedisController { - @Autowired - private RedisService redisService; + private final RedisService redisService; + + public RedisController(RedisService redisService) { + this.redisService = redisService; + } @Log("查询Redis缓存") - @GetMapping(value = "/redis") + @GetMapping + @ApiOperation("查询Redis缓存") @PreAuthorize("hasAnyRole('ADMIN','REDIS_ALL','REDIS_SELECT')") public ResponseEntity getRedis(String key, Pageable pageable){ - return new ResponseEntity(redisService.findByKey(key,pageable), HttpStatus.OK); + return new ResponseEntity<>(redisService.findByKey(key,pageable), HttpStatus.OK); } @Log("删除Redis缓存") - @DeleteMapping(value = "/redis") + @DeleteMapping + @ApiOperation("删除Redis缓存") @PreAuthorize("hasAnyRole('ADMIN','REDIS_ALL','REDIS_DELETE')") public ResponseEntity delete(@RequestBody RedisVo resources){ redisService.delete(resources.getKey()); @@ -38,7 +44,8 @@ public class RedisController { } @Log("清空Redis缓存") - @DeleteMapping(value = "/redis/all") + @DeleteMapping(value = "/all") + @ApiOperation("清空Redis缓存") @PreAuthorize("hasAnyRole('ADMIN','REDIS_ALL','REDIS_DELETE')") public ResponseEntity deleteAll(){ redisService.flushdb(); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/VisitsController.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/VisitsController.java index bd73228f..f8e33423 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/VisitsController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/VisitsController.java @@ -1,5 +1,7 @@ package me.zhengjie.modules.monitor.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.modules.monitor.service.VisitsService; import me.zhengjie.utils.RequestHolder; import org.springframework.beans.factory.annotation.Autowired; @@ -15,25 +17,32 @@ import org.springframework.web.bind.annotation.RestController; * @date 2018-12-13 */ @RestController -@RequestMapping("api") +@RequestMapping("/api/visits") +@Api(tags = "系统:访问记录管理") public class VisitsController { - @Autowired - private VisitsService visitsService; + private final VisitsService visitsService; - @PostMapping(value = "/visits") + public VisitsController(VisitsService visitsService) { + this.visitsService = visitsService; + } + + @PostMapping + @ApiOperation("创建访问记录") public ResponseEntity create(){ visitsService.count(RequestHolder.getHttpServletRequest()); return new ResponseEntity(HttpStatus.CREATED); } - @GetMapping(value = "/visits") + @GetMapping + @ApiOperation("查询") public ResponseEntity get(){ - return new ResponseEntity(visitsService.get(),HttpStatus.OK); + return new ResponseEntity<>(visitsService.get(),HttpStatus.OK); } - @GetMapping(value = "/visits/chartData") + @GetMapping(value = "/chartData") + @ApiOperation("查询图表数据") public ResponseEntity getChartData(){ - return new ResponseEntity(visitsService.getChartData(),HttpStatus.OK); + return new ResponseEntity<>(visitsService.getChartData(),HttpStatus.OK); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java index c31d05c3..2065dfe9 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java @@ -13,28 +13,28 @@ public interface RedisService { /** * findById - * @param key - * @return + * @param key 键 + * @return / */ Page findByKey(String key, Pageable pageable); /** * 查询验证码的值 - * @param key - * @return + * @param key 键 + * @return / */ String getCodeVal(String key); /** * 保存验证码 - * @param key - * @param val + * @param key 键 + * @param val 值 */ void saveCode(String key, Object val); /** * delete - * @param key + * @param key 键 */ void delete(String key); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/VisitsService.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/VisitsService.java index 2f80df2c..a403b089 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/VisitsService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/VisitsService.java @@ -1,7 +1,6 @@ package me.zhengjie.modules.monitor.service; import org.springframework.scheduling.annotation.Async; - import javax.servlet.http.HttpServletRequest; /** @@ -17,20 +16,20 @@ public interface VisitsService { /** * 新增记录 - * @param request + * @param request / */ @Async void count(HttpServletRequest request); /** * 获取数据 - * @return + * @return / */ Object get(); /** * getChartData - * @return + * @return / */ Object getChartData(); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java index 249f1472..2f225958 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java @@ -3,7 +3,6 @@ package me.zhengjie.modules.monitor.service.impl; 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.beans.factory.annotation.Value; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; @@ -12,6 +11,7 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.concurrent.TimeUnit; /** @@ -21,54 +21,58 @@ import java.util.concurrent.TimeUnit; @Service public class RedisServiceImpl implements RedisService { - @Autowired - RedisTemplate redisTemplate; + private final RedisTemplate redisTemplate; @Value("${loginCode.expiration}") private Long expiration; + public RedisServiceImpl(RedisTemplate redisTemplate) { + this.redisTemplate = redisTemplate; + } + @Override + @SuppressWarnings("unchecked") public Page findByKey(String key, Pageable pageable){ List redisVos = new ArrayList<>(); if(!"*".equals(key)){ key = "*" + key + "*"; } - for (Object s : redisTemplate.keys(key)) { + for (Object s : Objects.requireNonNull(redisTemplate.keys(key))) { // 过滤掉权限的缓存 - if (s.toString().indexOf("role::loadPermissionByUser") != -1 || s.toString().indexOf("user::loadUserByUsername") != -1) { + if (s.toString().contains("role::loadPermissionByUser") || s.toString().contains("user::loadUserByUsername")) { continue; } - RedisVo redisVo = new RedisVo(s.toString(),redisTemplate.opsForValue().get(s.toString()).toString()); + RedisVo redisVo = new RedisVo(s.toString(), Objects.requireNonNull(redisTemplate.opsForValue().get(s.toString())).toString()); redisVos.add(redisVo); } - Page page = new PageImpl( + return new PageImpl( PageUtil.toPage(pageable.getPageNumber(),pageable.getPageSize(),redisVos), pageable, redisVos.size()); - return page; } @Override + @SuppressWarnings("unchecked") public void delete(String key) { redisTemplate.delete(key); } @Override public void flushdb() { - redisTemplate.getConnectionFactory().getConnection().flushDb(); + Objects.requireNonNull(redisTemplate.getConnectionFactory()).getConnection().flushDb(); } @Override public String getCodeVal(String key) { try { - String value = redisTemplate.opsForValue().get(key).toString(); - return value; + return Objects.requireNonNull(redisTemplate.opsForValue().get(key)).toString(); }catch (Exception e){ return ""; } } @Override + @SuppressWarnings("unchecked") public void saveCode(String key, Object val) { redisTemplate.opsForValue().set(key,val); redisTemplate.expire(key,expiration, TimeUnit.MINUTES); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/VisitsServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/VisitsServiceImpl.java index fa00b02d..ebf93bb5 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/VisitsServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/VisitsServiceImpl.java @@ -26,11 +26,14 @@ import java.util.stream.Collectors; @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class VisitsServiceImpl implements VisitsService { - @Autowired - private VisitsRepository visitsRepository; + private final VisitsRepository visitsRepository; - @Autowired - private LogRepository logRepository; + private final LogRepository logRepository; + + public VisitsServiceImpl(VisitsRepository visitsRepository, LogRepository logRepository) { + this.visitsRepository = visitsRepository; + this.logRepository = logRepository; + } @Override public void save() { @@ -58,7 +61,7 @@ public class VisitsServiceImpl implements VisitsService { @Override public Object get() { - Map map = new HashMap(); + Map map = new HashMap<>(); LocalDate localDate = LocalDate.now(); Visits visits = visitsRepository.findByDate(localDate.toString()); List list = visitsRepository.findAllVisits(localDate.minusDays(6).toString(),localDate.plusDays(1).toString()); @@ -77,7 +80,7 @@ public class VisitsServiceImpl implements VisitsService { @Override public Object getChartData() { - Map map = new HashMap(); + Map map = new HashMap<>(); LocalDate localDate = LocalDate.now(); List list = visitsRepository.findAllVisits(localDate.minusDays(6).toString(),localDate.plusDays(1).toString()); map.put("weekDays",list.stream().map(Visits::getWeekDay).collect(Collectors.toList())); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java index a66ec06e..557df43c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java @@ -3,7 +3,6 @@ package me.zhengjie.modules.quartz.config; 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; import org.springframework.stereotype.Component; @@ -17,24 +16,24 @@ import java.util.List; @Component public class JobRunner implements ApplicationRunner { - @Autowired - private QuartzJobRepository quartzJobRepository; + private final QuartzJobRepository quartzJobRepository; - @Autowired - private QuartzManage quartzManage; + private final QuartzManage quartzManage; + + public JobRunner(QuartzJobRepository quartzJobRepository, QuartzManage quartzManage) { + this.quartzJobRepository = quartzJobRepository; + this.quartzManage = quartzManage; + } /** * 项目启动时重新激活启用的定时任务 - * @param applicationArguments - * @throws Exception + * @param applicationArguments / */ @Override public void run(ApplicationArguments applicationArguments){ System.out.println("--------------------注入定时任务---------------------"); List quartzJobs = quartzJobRepository.findByIsPauseIsFalse(); - quartzJobs.forEach(quartzJob -> { - quartzManage.addJob(quartzJob); - }); + quartzJobs.forEach(quartzManage::addJob); System.out.println("--------------------定时任务注入完成---------------------"); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java index 3486ad81..085534ab 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java @@ -2,7 +2,6 @@ package me.zhengjie.modules.quartz.config; import org.quartz.Scheduler; import org.quartz.spi.TriggerFiredBundle; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.AutowireCapableBeanFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -12,7 +11,7 @@ import org.springframework.stereotype.Component; /** * 定时任务配置 - * @author + * @author / * @date 2019-01-07 */ @Configuration @@ -22,10 +21,13 @@ public class QuartzConfig { * 解决Job中注入Spring Bean为null的问题 */ @Component("quartzJobFactory") - public class QuartzJobFactory extends AdaptableJobFactory { + public static class QuartzJobFactory extends AdaptableJobFactory { - @Autowired - private AutowireCapableBeanFactory capableBeanFactory; + private final AutowireCapableBeanFactory capableBeanFactory; + + public QuartzJobFactory(AutowireCapableBeanFactory capableBeanFactory) { + this.capableBeanFactory = capableBeanFactory; + } @Override protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception { @@ -39,9 +41,9 @@ public class QuartzConfig { /** * 注入scheduler到spring - * @param quartzJobFactory - * @return - * @throws Exception + * @param quartzJobFactory / + * @return Scheduler + * @throws Exception / */ @Bean(name = "scheduler") public Scheduler scheduler(QuartzJobFactory quartzJobFactory) throws Exception { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java index 65692d07..faa62c2e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java @@ -25,55 +25,39 @@ public class QuartzJob implements Serializable { @NotNull(groups = {Update.class}) private Long id; - /** - * 定时器名称 - */ + // 定时器名称 @Column(name = "job_name") private String jobName; - /** - * Bean名称 - */ + // Bean名称 @Column(name = "bean_name") @NotBlank private String beanName; - /** - * 方法名称 - */ + // 方法名称 @Column(name = "method_name") @NotBlank private String methodName; - /** - * 参数 - */ + // 参数 @Column(name = "params") private String params; - /** - * cron表达式 - */ + // cron表达式 @Column(name = "cron_expression") @NotBlank private String cronExpression; - /** - * 状态 - */ + // 状态 @Column(name = "is_pause") private Boolean isPause = false; - /** - * 备注 - */ + // 备注 @Column(name = "remark") @NotBlank private String remark; - /** - * 创建日期 - */ + // 创建日期 @UpdateTimestamp @Column(name = "update_time") private Timestamp updateTime; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzLog.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzLog.java index 9bd347a6..9958ce6c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzLog.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzLog.java @@ -20,56 +20,38 @@ public class QuartzLog implements Serializable { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - /** - * 任务名称 - */ + // 任务名称 @Column(name = "job_name") private String jobName; - /** - * Bean名称 - */ + // Bean名称 @Column(name = "baen_name") private String beanName; - /** - * 方法名称 - */ + // 方法名称 @Column(name = "method_name") private String methodName; - /** - * 参数 - */ + // 参数 @Column(name = "params") private String params; - /** - * cron表达式 - */ + // cron表达式 @Column(name = "cron_expression") private String cronExpression; - /** - * 状态 - */ + // 状态 @Column(name = "is_success") private Boolean isSuccess; - /** - * 异常详细 - */ + // 异常详细 @Column(name = "exception_detail",columnDefinition = "text") private String exceptionDetail; - /** - * 耗时(毫秒) - */ + // 耗时(毫秒) private Long time; - /** - * 创建日期 - */ + // 创建日期 @CreationTimestamp @Column(name = "create_time") private Timestamp createTime; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzJobRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzJobRepository.java index 087f0617..e4143f9d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzJobRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzJobRepository.java @@ -9,11 +9,11 @@ import java.util.List; * @author Zheng Jie * @date 2019-01-07 */ -public interface QuartzJobRepository extends JpaRepository, JpaSpecificationExecutor { +public interface QuartzJobRepository extends JpaRepository, JpaSpecificationExecutor { /** * 查询启用的任务 - * @return + * @return List */ List findByIsPauseIsFalse(); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzLogRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzLogRepository.java index 6b78d460..f0722a82 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzLogRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzLogRepository.java @@ -8,6 +8,6 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; * @author Zheng Jie * @date 2019-01-07 */ -public interface QuartzLogRepository extends JpaRepository, JpaSpecificationExecutor { +public interface QuartzLogRepository extends JpaRepository, JpaSpecificationExecutor { } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java index 1a604930..e8a860d3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java @@ -1,12 +1,13 @@ package me.zhengjie.modules.quartz.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import me.zhengjie.aop.log.Log; import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.quartz.domain.QuartzJob; import me.zhengjie.modules.quartz.service.QuartzJobService; import me.zhengjie.modules.quartz.service.dto.JobQueryCriteria; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -20,39 +21,47 @@ import org.springframework.web.bind.annotation.*; */ @Slf4j @RestController -@RequestMapping("/api") +@Api(tags = "系统:定时任务管理") +@RequestMapping("/api/jobs") public class QuartzJobController { private static final String ENTITY_NAME = "quartzJob"; - @Autowired - private QuartzJobService quartzJobService; + private final QuartzJobService quartzJobService; - @Log("查询定时任务") - @GetMapping(value = "/jobs") - @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_SELECT')") - public ResponseEntity getJobs(JobQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity(quartzJobService.queryAll(criteria,pageable), HttpStatus.OK); + public QuartzJobController(QuartzJobService quartzJobService) { + this.quartzJobService = quartzJobService; } - @GetMapping(value = "/jobLogs") + @Log("查询定时任务") + @ApiOperation("查询定时任务") + @GetMapping + @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_SELECT')") + public ResponseEntity getJobs(JobQueryCriteria criteria, Pageable pageable){ + return new ResponseEntity<>(quartzJobService.queryAll(criteria,pageable), HttpStatus.OK); + } + + @ApiOperation("查询任务执行日志") + @GetMapping(value = "/logs") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_SELECT')") public ResponseEntity getJobLogs(JobQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity(quartzJobService.queryAllLog(criteria,pageable), HttpStatus.OK); + return new ResponseEntity<>(quartzJobService.queryAllLog(criteria,pageable), HttpStatus.OK); } @Log("新增定时任务") - @PostMapping(value = "/jobs") + @ApiOperation("新增定时任务") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_CREATE')") public ResponseEntity create(@Validated @RequestBody QuartzJob resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } - return new ResponseEntity(quartzJobService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(quartzJobService.create(resources),HttpStatus.CREATED); } @Log("修改定时任务") - @PutMapping(value = "/jobs") + @ApiOperation("修改定时任务") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") public ResponseEntity update(@Validated(QuartzJob.Update.class) @RequestBody QuartzJob resources){ quartzJobService.update(resources); @@ -60,7 +69,8 @@ public class QuartzJobController { } @Log("更改定时任务状态") - @PutMapping(value = "/jobs/{id}") + @ApiOperation("更改定时任务状态") + @PutMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") public ResponseEntity updateIsPause(@PathVariable Long id){ quartzJobService.updateIsPause(quartzJobService.findById(id)); @@ -68,7 +78,8 @@ public class QuartzJobController { } @Log("执行定时任务") - @PutMapping(value = "/jobs/exec/{id}") + @ApiOperation("执行定时任务") + @PutMapping(value = "/exec/{id}") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") public ResponseEntity execution(@PathVariable Long id){ quartzJobService.execution(quartzJobService.findById(id)); @@ -76,7 +87,8 @@ public class QuartzJobController { } @Log("删除定时任务") - @DeleteMapping(value = "/jobs/{id}") + @ApiOperation("删除定时任务") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_DELETE')") public ResponseEntity delete(@PathVariable Long id){ quartzJobService.delete(quartzJobService.findById(id)); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/QuartzJobService.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/QuartzJobService.java index a5ade06d..d11aaf4c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/QuartzJobService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/QuartzJobService.java @@ -1,78 +1,36 @@ package me.zhengjie.modules.quartz.service; import me.zhengjie.modules.quartz.domain.QuartzJob; -import me.zhengjie.modules.quartz.domain.QuartzLog; import me.zhengjie.modules.quartz.service.dto.JobQueryCriteria; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; /** * @author Zheng Jie * @date 2019-01-07 */ -@CacheConfig(cacheNames = "quartzJob") public interface QuartzJobService { - /** - * queryAll quartzJob - * @param criteria - * @param pageable - * @return - */ - @Cacheable Object queryAll(JobQueryCriteria criteria, Pageable pageable); - /** - * queryAll quartzLog - * @param criteria - * @param pageable - * @return - */ Object queryAllLog(JobQueryCriteria criteria, Pageable pageable); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) QuartzJob create(QuartzJob resources); - /** - * update - * @param resources - * @return - */ - @CacheEvict(allEntries = true) void update(QuartzJob resources); - /** - * del - * @param quartzJob - */ - @CacheEvict(allEntries = true) void delete(QuartzJob quartzJob); - /** - * findById - * @param id - * @return - */ - @Cacheable(key = "#p0") QuartzJob findById(Long id); /** * 更改定时任务状态 - * @param quartzJob + * @param quartzJob / */ - @CacheEvict(allEntries = true) void updateIsPause(QuartzJob quartzJob); /** * 立即执行定时任务 - * @param quartzJob + * @param quartzJob / */ void execution(QuartzJob quartzJob); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java index b38c6c59..06058f89 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java @@ -11,31 +11,37 @@ import me.zhengjie.utils.PageUtil; import me.zhengjie.utils.QueryHelp; import me.zhengjie.utils.ValidationUtil; import org.quartz.CronExpression; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import java.util.Optional; /** * @author Zheng Jie * @date 2019-01-07 */ @Service(value = "quartzJobService") +@CacheConfig(cacheNames = "quartzJob") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class QuartzJobServiceImpl implements QuartzJobService { - @Autowired - private QuartzJobRepository quartzJobRepository; + private final QuartzJobRepository quartzJobRepository; - @Autowired - private QuartzLogRepository quartzLogRepository; + private final QuartzLogRepository quartzLogRepository; - @Autowired - private QuartzManage quartzManage; + private final QuartzManage quartzManage; + + public QuartzJobServiceImpl(QuartzJobRepository quartzJobRepository, QuartzLogRepository quartzLogRepository, QuartzManage quartzManage) { + this.quartzJobRepository = quartzJobRepository; + this.quartzLogRepository = quartzLogRepository; + this.quartzManage = quartzManage; + } @Override + @Cacheable public Object queryAll(JobQueryCriteria criteria, Pageable pageable){ return PageUtil.toPage(quartzJobRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable)); } @@ -46,13 +52,15 @@ public class QuartzJobServiceImpl implements QuartzJobService { } @Override + @Cacheable(key = "#p0") public QuartzJob findById(Long id) { - Optional quartzJob = quartzJobRepository.findById(id); - ValidationUtil.isNull(quartzJob,"QuartzJob","id",id); - return quartzJob.get(); + QuartzJob quartzJob = quartzJobRepository.findById(id).orElseGet(QuartzJob::new); + ValidationUtil.isNull(quartzJob.getId(),"QuartzJob","id",id); + return quartzJob; } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public QuartzJob create(QuartzJob resources) { if (!CronExpression.isValidExpression(resources.getCronExpression())){ @@ -64,6 +72,7 @@ public class QuartzJobServiceImpl implements QuartzJobService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(QuartzJob resources) { if(resources.getId().equals(1L)){ @@ -77,6 +86,7 @@ public class QuartzJobServiceImpl implements QuartzJobService { } @Override + @CacheEvict(allEntries = true) public void updateIsPause(QuartzJob quartzJob) { if(quartzJob.getId().equals(1L)){ throw new BadRequestException("该任务不可操作"); @@ -100,6 +110,7 @@ public class QuartzJobServiceImpl implements QuartzJobService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(QuartzJob quartzJob) { if(quartzJob.getId().equals(1L)){ diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/VisitsTask.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/VisitsTask.java index 01e238e2..47bb66c7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/VisitsTask.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/VisitsTask.java @@ -1,7 +1,6 @@ package me.zhengjie.modules.quartz.task; import me.zhengjie.modules.monitor.service.VisitsService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -11,8 +10,11 @@ import org.springframework.stereotype.Component; @Component public class VisitsTask { - @Autowired - private VisitsService visitsService; + private final VisitsService visitsService; + + public VisitsTask(VisitsService visitsService) { + this.visitsService = visitsService; + } public void run(){ visitsService.save(); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java index 221d665d..31209f0a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java @@ -17,7 +17,7 @@ import java.util.concurrent.Future; /** * 参考人人开源,https://gitee.com/renrenio/renren-security - * @author + * @author / * @date 2019-01-07 */ @Async @@ -32,9 +32,8 @@ public class ExecutionJob extends QuartzJobBean { protected void executeInternal(JobExecutionContext context) { QuartzJob quartzJob = (QuartzJob) context.getMergedJobDataMap().get(QuartzJob.JOB_KEY); // 获取spring bean - QuartzLogRepository quartzLogRepository = SpringContextHolder.getBean("quartzLogRepository"); - QuartzJobService quartzJobService = SpringContextHolder.getBean("quartzJobService"); - QuartzManage quartzManage = SpringContextHolder.getBean("quartzManage"); + QuartzLogRepository quartzLogRepository = SpringContextHolder.getBean(QuartzLogRepository.class); + QuartzJobService quartzJobService = SpringContextHolder.getBean(QuartzJobService.class); QuartzLog log = new QuartzLog(); log.setJobName(quartzJob.getJobName()); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java index a017df19..1cb6a2ce 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java @@ -56,8 +56,7 @@ public class QuartzManage { /** * 更新job cron表达式 - * @param quartzJob - * @throws SchedulerException + * @param quartzJob / */ public void updateJobCron(QuartzJob quartzJob){ try { @@ -88,8 +87,7 @@ public class QuartzManage { /** * 删除一个job - * @param quartzJob - * @throws SchedulerException + * @param quartzJob / */ public void deleteJob(QuartzJob quartzJob){ try { @@ -104,8 +102,7 @@ public class QuartzManage { /** * 恢复一个job - * @param quartzJob - * @throws SchedulerException + * @param quartzJob / */ public void resumeJob(QuartzJob quartzJob){ try { @@ -124,8 +121,7 @@ public class QuartzManage { /** * 立即执行job - * @param quartzJob - * @throws SchedulerException + * @param quartzJob / */ public void runAJobNow(QuartzJob quartzJob){ try { @@ -146,8 +142,7 @@ public class QuartzManage { /** * 暂停一个job - * @param quartzJob - * @throws SchedulerException + * @param quartzJob / */ public void pauseJob(QuartzJob quartzJob){ try { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java index d9407291..f3f8720c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java @@ -1,7 +1,6 @@ package me.zhengjie.modules.quartz.utils; import lombok.extern.slf4j.Slf4j; -import me.zhengjie.exception.BadRequestException; import me.zhengjie.utils.SpringContextHolder; import org.apache.commons.lang3.StringUtils; import org.springframework.util.ReflectionUtils; @@ -10,7 +9,7 @@ import java.util.concurrent.Callable; /** * 执行定时任务 - * @author + * @author / */ @Slf4j public class QuartzRunnable implements Callable { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java index d10bd218..0e5f2575 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java @@ -25,23 +25,21 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthentic @EnableGlobalMethodSecurity(prePostEnabled = true) public class SecurityConfig extends WebSecurityConfigurerAdapter { - @Autowired - private JwtAuthenticationEntryPoint unauthorizedHandler; + private final JwtAuthenticationEntryPoint unauthorizedHandler; - @Autowired - private JwtUserDetailsService jwtUserDetailsService; + private final JwtUserDetailsService jwtUserDetailsService; - /** - * 自定义基于JWT的安全过滤器 - */ - @Autowired - JwtAuthorizationTokenFilter authenticationTokenFilter; + // 自定义基于JWT的安全过滤器 + private final JwtAuthorizationTokenFilter authenticationTokenFilter; @Value("${jwt.header}") private String tokenHeader; - @Value("${jwt.auth.path}") - private String loginPath; + public SecurityConfig(JwtAuthenticationEntryPoint unauthorizedHandler, JwtUserDetailsService jwtUserDetailsService, JwtAuthorizationTokenFilter authenticationTokenFilter) { + this.unauthorizedHandler = unauthorizedHandler; + this.jwtUserDetailsService = jwtUserDetailsService; + this.authenticationTokenFilter = authenticationTokenFilter; + } @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { @@ -70,6 +68,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity httpSecurity) throws Exception { + String loginPath = "login"; httpSecurity // 禁用 CSRF @@ -91,7 +90,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { "/**/*.js" ).anonymous() - .antMatchers( HttpMethod.POST,"/auth/"+loginPath).anonymous() + .antMatchers( HttpMethod.POST,"/auth/"+ loginPath).anonymous() .antMatchers("/auth/vCode").anonymous() // 支付宝回调 .antMatchers("/api/aliPay/return").anonymous() diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java index baf99159..de76fb7a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java @@ -2,6 +2,8 @@ package me.zhengjie.modules.security.rest; import cn.hutool.core.codec.Base64; import cn.hutool.core.util.IdUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import me.zhengjie.aop.log.Log; import me.zhengjie.exception.BadRequestException; @@ -15,7 +17,6 @@ import me.zhengjie.utils.EncryptUtils; import me.zhengjie.modules.security.utils.JwtTokenUtil; import me.zhengjie.utils.SecurityUtils; import me.zhengjie.utils.StringUtils; -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; @@ -23,7 +24,6 @@ import org.springframework.security.authentication.AccountExpiredException; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import javax.servlet.http.HttpServletResponse; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -34,29 +34,28 @@ import java.io.IOException; */ @Slf4j @RestController -@RequestMapping("auth") +@RequestMapping("/auth") +@Api(tags = "系统:系统授权接口") public class AuthenticationController { @Value("${jwt.header}") private String tokenHeader; - @Autowired - private JwtTokenUtil jwtTokenUtil; + private final JwtTokenUtil jwtTokenUtil; - @Autowired - private RedisService redisService; + private final RedisService redisService; - @Autowired - @Qualifier("jwtUserDetailsService") - private UserDetailsService userDetailsService; + private final UserDetailsService userDetailsService; + + public AuthenticationController(JwtTokenUtil jwtTokenUtil, RedisService redisService, @Qualifier("jwtUserDetailsService") UserDetailsService userDetailsService) { + this.jwtTokenUtil = jwtTokenUtil; + this.redisService = redisService; + this.userDetailsService = userDetailsService; + } - /** - * 登录授权 - * @param authorizationUser - * @return - */ @Log("用户登录") - @PostMapping(value = "${jwt.auth.path}") + @ApiOperation("登录授权") + @PostMapping(value = "/login") public ResponseEntity login(@Validated @RequestBody AuthorizationUser authorizationUser){ // 查询验证码 @@ -86,21 +85,16 @@ public class AuthenticationController { return ResponseEntity.ok(new AuthenticationInfo(token,jwtUser)); } - /** - * 获取用户信息 - * @return - */ - @GetMapping(value = "${jwt.auth.account}") + @ApiOperation("获取用户信息") + @GetMapping(value = "/info") public ResponseEntity getUserInfo(){ JwtUser jwtUser = (JwtUser)userDetailsService.loadUserByUsername(SecurityUtils.getUsername()); return ResponseEntity.ok(jwtUser); } - /** - * 获取验证码 - */ - @GetMapping(value = "vCode") - public ImgResult getCode(HttpServletResponse response) throws IOException { + @ApiOperation("获取验证码") + @GetMapping(value = "/vCode") + public ImgResult getCode() throws IOException { //生成随机字串 String verifyCode = VerifyCodeUtils.generateVerifyCode(4); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java index f1504671..9569c8be 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java @@ -18,9 +18,7 @@ public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint, Se public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException { - /** - * 当用户尝试访问安全的REST资源而不提供任何凭据时,将调用此方法发送401 响应 - */ + // 当用户尝试访问安全的REST资源而不提供任何凭据时,将调用此方法发送401 响应 response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authException==null?"Unauthorized":authException.getMessage()); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtPermissionService.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtPermissionService.java index c653d205..b1611655 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtPermissionService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtPermissionService.java @@ -3,7 +3,6 @@ package me.zhengjie.modules.security.service; import me.zhengjie.modules.system.domain.Role; import me.zhengjie.modules.system.repository.RoleRepository; import me.zhengjie.modules.system.service.dto.UserDTO; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.Cacheable; import org.springframework.security.core.GrantedAuthority; @@ -17,13 +16,16 @@ import java.util.stream.Collectors; @CacheConfig(cacheNames = "role") public class JwtPermissionService { - @Autowired - private RoleRepository roleRepository; + private final RoleRepository roleRepository; + + public JwtPermissionService(RoleRepository roleRepository) { + this.roleRepository = roleRepository; + } /** * key的名称如有修改,请同步修改 UserServiceImpl 中的 update 方法 - * @param user - * @return + * @param user 用户信息 + * @return Collection */ @Cacheable(key = "'loadPermissionByUser:' + #p0.username") public Collection mapToGrantedAuthorities(UserDTO user) { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtUserDetailsService.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtUserDetailsService.java index 91239a04..51656245 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtUserDetailsService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtUserDetailsService.java @@ -4,7 +4,6 @@ import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.security.security.JwtUser; import me.zhengjie.modules.system.service.UserService; import me.zhengjie.modules.system.service.dto.*; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.stereotype.Service; @@ -20,11 +19,14 @@ import java.util.Optional; @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class JwtUserDetailsService implements UserDetailsService { - @Autowired - private UserService userService; + private final UserService userService; - @Autowired - private JwtPermissionService permissionService; + private final JwtPermissionService permissionService; + + public JwtUserDetailsService(UserService userService, JwtPermissionService permissionService) { + this.userService = userService; + this.permissionService = permissionService; + } @Override public UserDetails loadUserByUsername(String username){ diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/JwtTokenUtil.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/JwtTokenUtil.java index ee7517a7..dd2734a3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/JwtTokenUtil.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/JwtTokenUtil.java @@ -31,15 +31,15 @@ public class JwtTokenUtil implements Serializable { return getClaimFromToken(token, Claims::getSubject); } - public Date getIssuedAtDateFromToken(String token) { + private Date getIssuedAtDateFromToken(String token) { return getClaimFromToken(token, Claims::getIssuedAt); } - public Date getExpirationDateFromToken(String token) { + private Date getExpirationDateFromToken(String token) { return getClaimFromToken(token, Claims::getExpiration); } - public T getClaimFromToken(String token, Function claimsResolver) { + private T getClaimFromToken(String token, Function claimsResolver) { final Claims claims = getAllClaimsFromToken(token); return claimsResolver.apply(claims); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/VerifyCodeUtils.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/VerifyCodeUtils.java index 74eb04a6..406b2ded 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/VerifyCodeUtils.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/VerifyCodeUtils.java @@ -1,5 +1,7 @@ package me.zhengjie.modules.security.utils; +import me.zhengjie.utils.StringUtils; + import java.awt.Color; import java.awt.Font; import java.awt.Graphics; @@ -20,26 +22,27 @@ import javax.imageio.ImageIO; public class VerifyCodeUtils{ //使用到Algerian字体,系统里没有的话需要安装字体,字体只显示大写,去掉了1,0,i,o几个容易混淆的字符 - public static final String VERIFY_CODES = "23456789ABCDEFGHJKLMNPQRSTUVWXYZ"; + private static final String VERIFY_CODES = "23456789ABCDEFGHJKLMNPQRSTUVWXYZ"; private static Random random = new Random(); /** * 使用系统默认字符源生成验证码 * @param verifySize 验证码长度 - * @return + * @return 验证码 */ public static String generateVerifyCode(int verifySize){ return generateVerifyCode(verifySize, VERIFY_CODES); } + /** * 使用指定源生成验证码 * @param verifySize 验证码长度 * @param sources 验证码字符源 - * @return + * @return 验证码 */ - public static String generateVerifyCode(int verifySize, String sources){ - if(sources == null || sources.length() == 0){ + private static String generateVerifyCode(int verifySize, String sources){ + if(StringUtils.isBlank(sources)){ sources = VERIFY_CODES; } int codesLen = sources.length(); @@ -53,11 +56,11 @@ public class VerifyCodeUtils{ /** * 输出指定验证码图片流 - * @param w - * @param h - * @param os - * @param code - * @throws IOException + * @param w / + * @param h / + * @param os / + * @param code / + * @throws IOException / */ public static void outputImage(int w, int h, OutputStream os, String code) throws IOException{ int verifySize = code.length(); @@ -157,33 +160,24 @@ public class VerifyCodeUtils{ } private static void shearX(Graphics g, int w1, int h1, Color color) { - int period = random.nextInt(2); - - boolean borderGap = true; int frames = 1; int phase = random.nextInt(2); - for (int i = 0; i < h1; i++) { double d = (double) (period >> 1) * Math.sin((double) i / (double) period + (6.2831853071795862D * (double) phase) / (double) frames); g.copyArea(0, i, w1, 1, (int) d, 0); - if (borderGap) { - g.setColor(color); - g.drawLine((int) d, i, 0, i); - g.drawLine((int) d + w1, i, w1, i); - } + g.setColor(color); + g.drawLine((int) d, i, 0, i); + g.drawLine((int) d + w1, i, w1, i); } } private static void shearY(Graphics g, int w1, int h1, Color color) { - int period = random.nextInt(40) + 10; // 50; - - boolean borderGap = true; int frames = 20; int phase = 7; for (int i = 0; i < w1; i++) { @@ -192,11 +186,9 @@ public class VerifyCodeUtils{ + (6.2831853071795862D * (double) phase) / (double) frames); g.copyArea(i, 0, 1, h1, 0, (int) d); - if (borderGap) { - g.setColor(color); - g.drawLine(i, (int) d, i, 0); - g.drawLine(i, (int) d + h1, i, h1); - } + g.setColor(color); + g.drawLine(i, (int) d, i, 0); + g.drawLine(i, (int) d + h1, i, h1); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java index 5fe611c8..36dd1863 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java @@ -19,18 +19,12 @@ import java.util.Set; @Table(name="dept") public class Dept implements Serializable { - /** - * ID - */ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") @NotNull(groups = Update.class) private Long id; - /** - * 名称 - */ @Column(name = "name",nullable = false) @NotBlank private String name; @@ -38,9 +32,6 @@ public class Dept implements Serializable { @NotNull private Boolean enabled; - /** - * 上级部门 - */ @Column(name = "pid",nullable = false) @NotNull private Long pid; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java index 83183d3e..033681af 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java @@ -22,16 +22,10 @@ public class Dict implements Serializable { @NotNull(groups = Update.class) private Long id; - /** - * 字典名称 - */ @Column(name = "name",nullable = false,unique = true) @NotBlank private String name; - /** - * 描述 - */ @Column(name = "remark") private String remark; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java index a3799a31..d6c7b3be 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java @@ -20,27 +20,19 @@ public class DictDetail implements Serializable { @NotNull(groups = Update.class) private Long id; - /** - * 字典标签 - */ + // 字典标签 @Column(name = "label",nullable = false) private String label; - /** - * 字典值 - */ + // 字典值 @Column(name = "value",nullable = false) private String value; - /** - * 排序 - */ + // 排序 @Column(name = "sort") private String sort = "999"; - /** - * 字典id - */ + // 字典id @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name = "dict_id") private Dict dict; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java index 58f3fd95..940e1df6 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java @@ -19,18 +19,12 @@ import java.io.Serializable; @Table(name="job") public class Job implements Serializable { - /** - * ID - */ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") @NotNull(groups = Update.class) private Long id; - /** - * 名称 - */ @Column(name = "name",nullable = false) @NotBlank private String name; @@ -39,9 +33,6 @@ public class Job implements Serializable { @NotNull private Long sort; - /** - * 状态 - */ @Column(name = "enabled",nullable = false) @NotNull private Boolean enabled; @@ -50,9 +41,6 @@ public class Job implements Serializable { @JoinColumn(name = "dept_id") private Dept dept; - /** - * 创建日期 - */ @Column(name = "create_time") @CreationTimestamp private Timestamp createTime; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java index 5ac2e6cb..addf5b16 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java @@ -51,15 +51,11 @@ public class Menu implements Serializable { @Column(columnDefinition = "bit(1) default 0") private Boolean hidden; - /** - * 上级菜单ID - */ + // 上级菜单ID @Column(name = "pid",nullable = false) private Long pid; - /** - * 是否为外链 true/false - */ + // 是否为外链 true/false @Column(name = "i_frame") private Boolean iFrame; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java index 69272186..1d97b55c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java @@ -29,9 +29,7 @@ public class Permission implements Serializable{ @NotBlank private String name; - /** - * 上级类目 - */ + // 上级类目 @NotNull @Column(name = "pid",nullable = false) private Long pid; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java index 12feee12..d8817f7c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java @@ -4,7 +4,6 @@ import me.zhengjie.modules.system.domain.Dept; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; - import java.util.List; import java.util.Set; @@ -12,13 +11,8 @@ import java.util.Set; * @author Zheng Jie * @date 2019-03-25 */ -public interface DeptRepository extends JpaRepository, JpaSpecificationExecutor { +public interface DeptRepository extends JpaRepository, JpaSpecificationExecutor { - /** - * findByPid - * @param id - * @return - */ List findByPid(Long id); @Query(value = "select name from dept where id = ?1",nativeQuery = true) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictDetailRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictDetailRepository.java index 6a8a036f..b394a7ba 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictDetailRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictDetailRepository.java @@ -8,5 +8,5 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; * @author Zheng Jie * @date 2019-04-10 */ -public interface DictDetailRepository extends JpaRepository, JpaSpecificationExecutor { +public interface DictDetailRepository extends JpaRepository, JpaSpecificationExecutor { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictRepository.java index 699f130b..f472a014 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictRepository.java @@ -8,5 +8,5 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; * @author Zheng Jie * @date 2019-04-10 */ -public interface DictRepository extends JpaRepository, JpaSpecificationExecutor { +public interface DictRepository extends JpaRepository, JpaSpecificationExecutor { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/JobRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/JobRepository.java index 38908a28..46f42739 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/JobRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/JobRepository.java @@ -8,5 +8,5 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; * @author Zheng Jie * @date 2019-03-29 */ -public interface JobRepository extends JpaRepository, JpaSpecificationExecutor { +public interface JobRepository extends JpaRepository, JpaSpecificationExecutor { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java index 91c6d798..829e616c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java @@ -1,40 +1,21 @@ package me.zhengjie.modules.system.repository; 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.Arrays; import java.util.LinkedHashSet; import java.util.List; -import java.util.Set; /** * @author Zheng Jie * @date 2018-12-17 */ -public interface MenuRepository extends JpaRepository, JpaSpecificationExecutor { +public interface MenuRepository extends JpaRepository, JpaSpecificationExecutor { - /** - * findByName - * @param name - * @return - */ Menu findByName(String name); - /** - * findByName - * @param name - * @return - */ Menu findByComponentName(String name); - /** - * findByPid - * @param pid - * @return - */ List findByPid(long pid); LinkedHashSet findByRoles_IdOrderBySortAsc(Long id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/PermissionRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/PermissionRepository.java index f27e8653..0e8ba8f3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/PermissionRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/PermissionRepository.java @@ -9,19 +9,9 @@ import java.util.List; * @author Zheng Jie * @date 2018-12-03 */ -public interface PermissionRepository extends JpaRepository, JpaSpecificationExecutor { +public interface PermissionRepository extends JpaRepository, JpaSpecificationExecutor { - /** - * findByName - * @param name - * @return - */ Permission findByName(String name); - /** - * findByPid - * @param pid - * @return - */ List findByPid(long pid); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java index 1e2b15ae..98edaed5 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java @@ -5,20 +5,14 @@ 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 java.util.Set; /** * @author Zheng Jie * @date 2018-12-03 */ -public interface RoleRepository extends JpaRepository, JpaSpecificationExecutor { +public interface RoleRepository extends JpaRepository, JpaSpecificationExecutor { - /** - * findByName - * @param name - * @return - */ Role findByName(String name); Set findByUsers_Id(Long id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserAvatarRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserAvatarRepository.java index 38136f85..1e7e058c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserAvatarRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserAvatarRepository.java @@ -4,12 +4,10 @@ import me.zhengjie.modules.system.domain.UserAvatar; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; -import java.util.Date; - /** * @author Zheng Jie * @date 2018-11-22 */ -public interface UserAvatarRepository extends JpaRepository, JpaSpecificationExecutor { +public interface UserAvatarRepository extends JpaRepository, JpaSpecificationExecutor { } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java index 6ccf3fdb..186ecf02 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java @@ -1,59 +1,26 @@ package me.zhengjie.modules.system.repository; import me.zhengjie.modules.system.domain.User; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.domain.Specification; 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 java.util.Date; -import java.util.List; /** * @author Zheng Jie * @date 2018-11-22 */ -public interface UserRepository extends JpaRepository, JpaSpecificationExecutor { +public interface UserRepository extends JpaRepository, JpaSpecificationExecutor { - /** - * findByUsername - * @param username - * @return - */ User findByUsername(String username); - /** - * findByEmail - * @param email - * @return - */ User findByEmail(String email); - /** - * 修改密码 - * @param username - * @param pass - */ @Modifying @Query(value = "update user set password = ?2 , last_password_reset_time = ?3 where username = ?1",nativeQuery = true) void updatePass(String username, String pass, Date lastPasswordResetTime); - /** - * 修改头像 - * @param username - * @param url - */ - @Modifying - @Query(value = "update user set avatar = ?2 where username = ?1",nativeQuery = true) - void updateAvatar(String username, String url); - - /** - * 修改邮箱 - * @param username - * @param email - */ @Modifying @Query(value = "update user set email = ?2 where username = ?1",nativeQuery = true) void updateEmail(String username, String email); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java index b57946bf..2f7a32f9 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java @@ -1,5 +1,7 @@ package me.zhengjie.modules.system.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.config.DataScope; import me.zhengjie.exception.BadRequestException; @@ -8,7 +10,6 @@ import me.zhengjie.modules.system.service.DeptService; import me.zhengjie.modules.system.service.dto.DeptDTO; import me.zhengjie.modules.system.service.dto.DeptQueryCriteria; import me.zhengjie.utils.ThrowableUtil; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; @@ -21,39 +22,46 @@ import java.util.List; * @date 2019-03-25 */ @RestController -@RequestMapping("api") +@Api(tags = "系统:部门管理") +@RequestMapping("/api/dept") public class DeptController { - @Autowired - private DeptService deptService; + private final DeptService deptService; - @Autowired - private DataScope dataScope; + private final DataScope dataScope; private static final String ENTITY_NAME = "dept"; + public DeptController(DeptService deptService, DataScope dataScope) { + this.deptService = deptService; + this.dataScope = dataScope; + } + @Log("查询部门") - @GetMapping(value = "/dept") + @ApiOperation("查询部门") + @GetMapping @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_SELECT','DEPT_ALL','DEPT_SELECT')") public ResponseEntity getDepts(DeptQueryCriteria criteria){ // 数据权限 criteria.setIds(dataScope.getDeptIds()); List deptDTOS = deptService.queryAll(criteria); - return new ResponseEntity(deptService.buildTree(deptDTOS),HttpStatus.OK); + return new ResponseEntity<>(deptService.buildTree(deptDTOS),HttpStatus.OK); } @Log("新增部门") - @PostMapping(value = "/dept") + @ApiOperation("新增部门") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','DEPT_ALL','DEPT_CREATE')") public ResponseEntity create(@Validated @RequestBody Dept resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } - return new ResponseEntity(deptService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(deptService.create(resources),HttpStatus.CREATED); } @Log("修改部门") - @PutMapping(value = "/dept") + @ApiOperation("修改部门") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','DEPT_ALL','DEPT_EDIT')") public ResponseEntity update(@Validated(Dept.Update.class) @RequestBody Dept resources){ deptService.update(resources); @@ -61,7 +69,8 @@ public class DeptController { } @Log("删除部门") - @DeleteMapping(value = "/dept/{id}") + @ApiOperation("删除部门") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','DEPT_ALL','DEPT_DELETE')") public ResponseEntity delete(@PathVariable Long id){ try { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java index 9480bb60..cd60339d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java @@ -1,5 +1,7 @@ package me.zhengjie.modules.system.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.system.domain.Dict; @@ -17,34 +19,41 @@ import org.springframework.web.bind.annotation.*; * @author Zheng Jie * @date 2019-04-10 */ +@Api(tags = "系统:字典管理") @RestController -@RequestMapping("api") +@RequestMapping("/api/dict") public class DictController { - @Autowired - private DictService dictService; + private final DictService dictService; private static final String ENTITY_NAME = "dict"; + public DictController(DictService dictService) { + this.dictService = dictService; + } + @Log("查询字典") - @GetMapping(value = "/dict") + @ApiOperation("查询字典") + @GetMapping @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_SELECT')") public ResponseEntity getDicts(DictQueryCriteria resources, Pageable pageable){ - return new ResponseEntity(dictService.queryAll(resources,pageable),HttpStatus.OK); + return new ResponseEntity<>(dictService.queryAll(resources,pageable),HttpStatus.OK); } @Log("新增字典") - @PostMapping(value = "/dict") + @ApiOperation("新增字典") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_CREATE')") public ResponseEntity create(@Validated @RequestBody Dict resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } - return new ResponseEntity(dictService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(dictService.create(resources),HttpStatus.CREATED); } @Log("修改字典") - @PutMapping(value = "/dict") + @ApiOperation("修改字典") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_EDIT')") public ResponseEntity update(@Validated(Dict.Update.class) @RequestBody Dict resources){ dictService.update(resources); @@ -52,7 +61,8 @@ public class DictController { } @Log("删除字典") - @DeleteMapping(value = "/dict/{id}") + @ApiOperation("删除字典") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_DELETE')") public ResponseEntity delete(@PathVariable Long id){ dictService.delete(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java index a15107fa..02e78ffa 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java @@ -1,5 +1,7 @@ package me.zhengjie.modules.system.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.system.domain.DictDetail; @@ -25,47 +27,55 @@ import java.util.stream.Collectors; * @date 2019-04-10 */ @RestController -@RequestMapping("api") +@Api(tags = "系统:字典详情管理") +@RequestMapping("/api/dictDetail") public class DictDetailController { - @Autowired - private DictDetailService dictDetailService; + private final DictDetailService dictDetailService; private static final String ENTITY_NAME = "dictDetail"; + public DictDetailController(DictDetailService dictDetailService) { + this.dictDetailService = dictDetailService; + } + @Log("查询字典详情") - @GetMapping(value = "/dictDetail") + @ApiOperation("查询字典详情") + @GetMapping public ResponseEntity getDictDetails(DictDetailQueryCriteria criteria, @PageableDefault(value = 10, sort = {"sort"}, direction = Sort.Direction.ASC) Pageable pageable){ String[] names = criteria.getDictName().split(","); - return new ResponseEntity(dictDetailService.queryAll(criteria,pageable),HttpStatus.OK); + return new ResponseEntity<>(dictDetailService.queryAll(criteria,pageable),HttpStatus.OK); } @Log("查询多个字典详情") - @GetMapping(value = "/dictDetail/map") + @ApiOperation("查询多个字典详情") + @GetMapping(value = "/map") public ResponseEntity getDictDetailMaps(DictDetailQueryCriteria criteria, @PageableDefault(value = 10, sort = {"sort"}, direction = Sort.Direction.ASC) Pageable pageable){ String[] names = criteria.getDictName().split(","); - Map map = new HashMap(names.length); + Map map = new HashMap<>(names.length); for (String name : names) { criteria.setDictName(name); map.put(name,dictDetailService.queryAll(criteria,pageable).get("content")); } - return new ResponseEntity(map,HttpStatus.OK); + return new ResponseEntity<>(map,HttpStatus.OK); } @Log("新增字典详情") - @PostMapping(value = "/dictDetail") + @ApiOperation("新增字典详情") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_CREATE')") public ResponseEntity create(@Validated @RequestBody DictDetail resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } - return new ResponseEntity(dictDetailService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(dictDetailService.create(resources),HttpStatus.CREATED); } @Log("修改字典详情") - @PutMapping(value = "/dictDetail") + @ApiOperation("修改字典详情") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_EDIT')") public ResponseEntity update(@Validated(DictDetail.Update.class) @RequestBody DictDetail resources){ dictDetailService.update(resources); @@ -73,7 +83,8 @@ public class DictDetailController { } @Log("删除字典详情") - @DeleteMapping(value = "/dictDetail/{id}") + @ApiOperation("删除字典详情") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_DELETE')") public ResponseEntity delete(@PathVariable Long id){ dictDetailService.delete(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java index 5694ea0c..1f455aaa 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java @@ -1,5 +1,7 @@ package me.zhengjie.modules.system.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.config.DataScope; import me.zhengjie.exception.BadRequestException; @@ -21,40 +23,47 @@ import java.util.Set; * @author Zheng Jie * @date 2019-03-29 */ +@Api(tags = "系统:岗位管理") @RestController -@RequestMapping("api") +@RequestMapping("/api/job") public class JobController { - @Autowired - private JobService jobService; + private final JobService jobService; - @Autowired - private DataScope dataScope; + private final DataScope dataScope; private static final String ENTITY_NAME = "job"; + public JobController(JobService jobService, DataScope dataScope) { + this.jobService = jobService; + this.dataScope = dataScope; + } + @Log("查询岗位") - @GetMapping(value = "/job") + @ApiOperation("查询岗位") + @GetMapping @PreAuthorize("hasAnyRole('ADMIN','USERJOB_ALL','USERJOB_SELECT','USER_ALL','USER_SELECT')") public ResponseEntity getJobs(JobQueryCriteria criteria, Pageable pageable){ // 数据权限 criteria.setDeptIds(dataScope.getDeptIds()); - return new ResponseEntity(jobService.queryAll(criteria, pageable),HttpStatus.OK); + return new ResponseEntity<>(jobService.queryAll(criteria, pageable),HttpStatus.OK); } @Log("新增岗位") - @PostMapping(value = "/job") + @ApiOperation("新增岗位") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','USERJOB_ALL','USERJOB_CREATE')") public ResponseEntity create(@Validated @RequestBody Job resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } - return new ResponseEntity(jobService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(jobService.create(resources),HttpStatus.CREATED); } @Log("修改岗位") - @PutMapping(value = "/job") + @ApiOperation("修改岗位") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','USERJOB_ALL','USERJOB_EDIT')") public ResponseEntity update(@Validated(Job.Update.class) @RequestBody Job resources){ jobService.update(resources); @@ -62,7 +71,8 @@ public class JobController { } @Log("删除岗位") - @DeleteMapping(value = "/job/{id}") + @ApiOperation("删除岗位") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','USERJOB_ALL','USERJOB_DELETE')") public ResponseEntity delete(@PathVariable Long id){ try { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java index 37a65a2b..03ce9ed5 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java @@ -1,5 +1,7 @@ package me.zhengjie.modules.system.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.modules.system.domain.Menu; import me.zhengjie.exception.BadRequestException; @@ -10,7 +12,6 @@ import me.zhengjie.modules.system.service.dto.MenuDTO; import me.zhengjie.modules.system.service.dto.MenuQueryCriteria; import me.zhengjie.modules.system.service.dto.UserDTO; import me.zhengjie.utils.SecurityUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; @@ -24,63 +25,63 @@ import java.util.Set; * @author Zheng Jie * @date 2018-12-03 */ +@Api(tags = "系统:菜单管理") @RestController -@RequestMapping("api") +@RequestMapping("/api/menus") public class MenuController { - @Autowired - private MenuService menuService; + private final MenuService menuService; - @Autowired - private UserService userService; + private final UserService userService; - @Autowired - private RoleService roleService; + private final RoleService roleService; private static final String ENTITY_NAME = "menu"; - /** - * 构建前端路由所需要的菜单 - * @return - */ - @GetMapping(value = "/menus/build") + public MenuController(MenuService menuService, UserService userService, RoleService roleService) { + this.menuService = menuService; + this.userService = userService; + this.roleService = roleService; + } + + @ApiOperation("获取菜单树") + @GetMapping(value = "/build") public ResponseEntity buildMenus(){ UserDTO user = userService.findByName(SecurityUtils.getUsername()); List menuDTOList = menuService.findByRoles(roleService.findByUsers_Id(user.getId())); - List menuDTOTree = (List)menuService.buildTree(menuDTOList).get("content"); - return new ResponseEntity(menuService.buildMenus(menuDTOTree),HttpStatus.OK); + return new ResponseEntity<>(menuService.buildMenus((List) menuService.buildTree(menuDTOList).get("content")),HttpStatus.OK); } - /** - * 返回全部的菜单 - * @return - */ - @GetMapping(value = "/menus/tree") + @ApiOperation("返回全部的菜单") + @GetMapping(value = "/tree") @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_CREATE','MENU_EDIT','ROLES_SELECT','ROLES_ALL')") public ResponseEntity getMenuTree(){ - return new ResponseEntity(menuService.getMenuTree(menuService.findByPid(0L)),HttpStatus.OK); + return new ResponseEntity<>(menuService.getMenuTree(menuService.findByPid(0L)),HttpStatus.OK); } @Log("查询菜单") - @GetMapping(value = "/menus") + @ApiOperation("查询菜单") + @GetMapping @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_SELECT')") public ResponseEntity getMenus(MenuQueryCriteria criteria){ List menuDTOList = menuService.queryAll(criteria); - return new ResponseEntity(menuService.buildTree(menuDTOList),HttpStatus.OK); + return new ResponseEntity<>(menuService.buildTree(menuDTOList),HttpStatus.OK); } @Log("新增菜单") - @PostMapping(value = "/menus") + @ApiOperation("新增菜单") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_CREATE')") public ResponseEntity create(@Validated @RequestBody Menu resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } - return new ResponseEntity(menuService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(menuService.create(resources),HttpStatus.CREATED); } @Log("修改菜单") - @PutMapping(value = "/menus") + @ApiOperation("修改菜单") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_EDIT')") public ResponseEntity update(@Validated(Menu.Update.class) @RequestBody Menu resources){ menuService.update(resources); @@ -88,7 +89,8 @@ public class MenuController { } @Log("删除菜单") - @DeleteMapping(value = "/menus/{id}") + @ApiOperation("删除菜单") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_DELETE')") public ResponseEntity delete(@PathVariable Long id){ List menuList = menuService.findByPid(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java index 216c838a..fdae182d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java @@ -1,5 +1,7 @@ package me.zhengjie.modules.system.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.modules.system.domain.Permission; import me.zhengjie.exception.BadRequestException; @@ -7,13 +9,11 @@ import me.zhengjie.modules.system.service.PermissionService; import me.zhengjie.modules.system.service.dto.PermissionDTO; import me.zhengjie.modules.system.service.dto.PermissionQueryCriteria; import me.zhengjie.modules.system.service.mapper.PermissionMapper; -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.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; - import java.util.HashSet; import java.util.List; import java.util.Set; @@ -22,48 +22,52 @@ import java.util.Set; * @author Zheng Jie * @date 2018-12-03 */ +@Api(tags = "系统:权限管理") @RestController -@RequestMapping("api") +@RequestMapping("/api/permissions") public class PermissionController { - @Autowired - private PermissionService permissionService; + private final PermissionService permissionService; - @Autowired - private PermissionMapper permissionMapper; + private final PermissionMapper permissionMapper; private static final String ENTITY_NAME = "permission"; - /** - * 返回全部的权限,新增角色时下拉选择 - * @return - */ - @GetMapping(value = "/permissions/tree") + public PermissionController(PermissionService permissionService, PermissionMapper permissionMapper) { + this.permissionService = permissionService; + this.permissionMapper = permissionMapper; + } + + @ApiOperation("返回全部的权限,新增角色时下拉选择") + @GetMapping(value = "/tree") @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_CREATE','PERMISSION_EDIT','ROLES_SELECT','ROLES_ALL')") public ResponseEntity getTree(){ - return new ResponseEntity(permissionService.getPermissionTree(permissionService.findByPid(0L)),HttpStatus.OK); + return new ResponseEntity<>(permissionService.getPermissionTree(permissionService.findByPid(0L)),HttpStatus.OK); } @Log("查询权限") - @GetMapping(value = "/permissions") + @ApiOperation("查询权限") + @GetMapping @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_SELECT')") public ResponseEntity getPermissions(PermissionQueryCriteria criteria){ List permissionDTOS = permissionService.queryAll(criteria); - return new ResponseEntity(permissionService.buildTree(permissionDTOS),HttpStatus.OK); + return new ResponseEntity<>(permissionService.buildTree(permissionDTOS),HttpStatus.OK); } @Log("新增权限") - @PostMapping(value = "/permissions") + @ApiOperation("新增权限") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_CREATE')") public ResponseEntity create(@Validated @RequestBody Permission resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } - return new ResponseEntity(permissionService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(permissionService.create(resources),HttpStatus.CREATED); } @Log("修改权限") - @PutMapping(value = "/permissions") + @ApiOperation("修改权限") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_EDIT')") public ResponseEntity update(@Validated(Permission.Update.class) @RequestBody Permission resources){ permissionService.update(resources); @@ -71,7 +75,8 @@ public class PermissionController { } @Log("删除权限") - @DeleteMapping(value = "/permissions/{id}") + @ApiOperation("删除权限") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_DELETE')") public ResponseEntity delete(@PathVariable Long id){ List permissions = permissionService.findByPid(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java index 340aa63c..99f59d06 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java @@ -1,6 +1,8 @@ package me.zhengjie.modules.system.rest; import cn.hutool.core.lang.Dict; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.modules.system.domain.Role; import me.zhengjie.exception.BadRequestException; @@ -9,15 +11,12 @@ import me.zhengjie.modules.system.service.dto.RoleQueryCriteria; import me.zhengjie.modules.system.service.dto.RoleSmallDTO; import me.zhengjie.utils.SecurityUtils; import me.zhengjie.utils.ThrowableUtil; -import org.hibernate.exception.ConstraintViolationException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.web.PageableDefault; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.transaction.TransactionSystemException; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.Collections; @@ -28,61 +27,62 @@ import java.util.stream.Collectors; * @author Zheng Jie * @date 2018-12-03 */ +@Api(tags = "系统:角色管理") @RestController -@RequestMapping("api") +@RequestMapping("/api/roles") public class RoleController { - @Autowired - private RoleService roleService; + private final RoleService roleService; private static final String ENTITY_NAME = "role"; - /** - * 获取单个role - * @param id - * @return - */ - @GetMapping(value = "/roles/{id}") - @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_SELECT')") - public ResponseEntity getRoles(@PathVariable Long id){ - return new ResponseEntity(roleService.findById(id), HttpStatus.OK); + public RoleController(RoleService roleService) { + this.roleService = roleService; } - /** - * 返回全部的角色,新增用户时下拉选择 - * @return - */ - @GetMapping(value = "/roles/all") + @ApiOperation("获取单个role") + @GetMapping(value = "/{id}") + @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_SELECT')") + public ResponseEntity getRoles(@PathVariable Long id){ + return new ResponseEntity<>(roleService.findById(id), HttpStatus.OK); + } + + @ApiOperation("返回全部的角色") + @GetMapping(value = "/all") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','USER_ALL','USER_CREATE','USER_EDIT')") public ResponseEntity getAll(@PageableDefault(value = 2000, sort = {"level"}, direction = Sort.Direction.ASC) Pageable pageable){ - return new ResponseEntity(roleService.queryAll(pageable),HttpStatus.OK); + return new ResponseEntity<>(roleService.queryAll(pageable),HttpStatus.OK); } @Log("查询角色") - @GetMapping(value = "/roles") + @ApiOperation("查询角色") + @GetMapping @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_SELECT')") public ResponseEntity getRoles(RoleQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity(roleService.queryAll(criteria,pageable),HttpStatus.OK); + return new ResponseEntity<>(roleService.queryAll(criteria,pageable),HttpStatus.OK); } - @GetMapping(value = "/roles/level") + @ApiOperation("获取用户级别") + @GetMapping(value = "/level") public ResponseEntity getLevel(){ List levels = roleService.findByUsers_Id(SecurityUtils.getUserId()).stream().map(RoleSmallDTO::getLevel).collect(Collectors.toList()); - return new ResponseEntity(Dict.create().set("level", Collections.min(levels)),HttpStatus.OK); + return new ResponseEntity<>(Dict.create().set("level", Collections.min(levels)),HttpStatus.OK); } @Log("新增角色") - @PostMapping(value = "/roles") + @ApiOperation("新增角色") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_CREATE')") public ResponseEntity create(@Validated @RequestBody Role resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } - return new ResponseEntity(roleService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(roleService.create(resources),HttpStatus.CREATED); } @Log("修改角色") - @PutMapping(value = "/roles") + @ApiOperation("修改角色") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_EDIT')") public ResponseEntity update(@Validated(Role.Update.class) @RequestBody Role resources){ roleService.update(resources); @@ -90,7 +90,8 @@ public class RoleController { } @Log("修改角色权限") - @PutMapping(value = "/roles/permission") + @ApiOperation("修改角色权限") + @PutMapping(value = "/permission") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_EDIT')") public ResponseEntity updatePermission(@RequestBody Role resources){ roleService.updatePermission(resources,roleService.findById(resources.getId())); @@ -98,7 +99,8 @@ public class RoleController { } @Log("修改角色菜单") - @PutMapping(value = "/roles/menu") + @ApiOperation("修改角色菜单") + @PutMapping(value = "/menu") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_EDIT')") public ResponseEntity updateMenu(@RequestBody Role resources){ roleService.updateMenu(resources,roleService.findById(resources.getId())); @@ -106,7 +108,8 @@ public class RoleController { } @Log("删除角色") - @DeleteMapping(value = "/roles/{id}") + @ApiOperation("删除角色") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_DELETE')") public ResponseEntity delete(@PathVariable Long id){ try { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java index 96bf7657..780d44b2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java @@ -1,8 +1,9 @@ package me.zhengjie.modules.system.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.config.DataScope; -import me.zhengjie.domain.Picture; import me.zhengjie.domain.VerificationCode; import me.zhengjie.modules.system.domain.User; import me.zhengjie.exception.BadRequestException; @@ -11,11 +12,9 @@ import me.zhengjie.modules.system.service.DeptService; import me.zhengjie.modules.system.service.RoleService; import me.zhengjie.modules.system.service.dto.RoleSmallDTO; import me.zhengjie.modules.system.service.dto.UserQueryCriteria; -import me.zhengjie.service.PictureService; import me.zhengjie.service.VerificationCodeService; import me.zhengjie.utils.*; import me.zhengjie.modules.system.service.UserService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -35,37 +34,40 @@ import java.util.stream.Collectors; * @author Zheng Jie * @date 2018-11-23 */ +@Api(tags = "系统:用户管理") @RestController -@RequestMapping("api") +@RequestMapping("/api/users") public class UserController { - @Autowired - private UserService userService; + private final UserService userService; - @Autowired - private PictureService pictureService; + private final DataScope dataScope; - @Autowired - private DataScope dataScope; + private final DeptService deptService; - @Autowired - private DeptService deptService; + private final RoleService roleService; - @Autowired - private RoleService roleService; + private final VerificationCodeService verificationCodeService; - @Autowired - private VerificationCodeService verificationCodeService; + public UserController(UserService userService, DataScope dataScope, DeptService deptService, RoleService roleService, VerificationCodeService verificationCodeService) { + this.userService = userService; + this.dataScope = dataScope; + this.deptService = deptService; + this.roleService = roleService; + this.verificationCodeService = verificationCodeService; + } @Log("导出用户数据") - @GetMapping(value = "/users/download") + @ApiOperation("导出用户数据") + @GetMapping(value = "/download") @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_SELECT')") public void update(HttpServletResponse response, UserQueryCriteria criteria) throws IOException { userService.download(userService.queryAll(criteria), response); } @Log("查询用户") - @GetMapping(value = "/users") + @ApiOperation("查询用户") + @GetMapping @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_SELECT')") public ResponseEntity getUsers(UserQueryCriteria criteria, Pageable pageable){ Set deptSet = new HashSet<>(); @@ -89,27 +91,29 @@ public class UserController { // 若无交集,则代表无数据权限 criteria.setDeptIds(result); if(result.size() == 0){ - return new ResponseEntity(PageUtil.toPage(null,0),HttpStatus.OK); - } else return new ResponseEntity(userService.queryAll(criteria,pageable),HttpStatus.OK); + return new ResponseEntity<>(PageUtil.toPage(null,0),HttpStatus.OK); + } else return new ResponseEntity<>(userService.queryAll(criteria,pageable),HttpStatus.OK); // 否则取并集 } else { result.addAll(deptSet); result.addAll(deptIds); criteria.setDeptIds(result); - return new ResponseEntity(userService.queryAll(criteria,pageable),HttpStatus.OK); + return new ResponseEntity<>(userService.queryAll(criteria,pageable),HttpStatus.OK); } } @Log("新增用户") - @PostMapping(value = "/users") + @ApiOperation("新增用户") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_CREATE')") public ResponseEntity create(@Validated @RequestBody User resources){ checkLevel(resources); - return new ResponseEntity(userService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(userService.create(resources),HttpStatus.CREATED); } @Log("修改用户") - @PutMapping(value = "/users") + @ApiOperation("修改用户") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_EDIT')") public ResponseEntity update(@Validated(User.Update.class) @RequestBody User resources){ checkLevel(resources); @@ -118,7 +122,8 @@ public class UserController { } @Log("删除用户") - @DeleteMapping(value = "/users/{id}") + @ApiOperation("删除用户") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_DELETE')") public ResponseEntity delete(@PathVariable Long id){ Integer currentLevel = Collections.min(roleService.findByUsers_Id(SecurityUtils.getUserId()).stream().map(RoleSmallDTO::getLevel).collect(Collectors.toList())); @@ -131,12 +136,8 @@ public class UserController { return new ResponseEntity(HttpStatus.OK); } - /** - * 修改密码 - * @param user - * @return - */ - @PostMapping(value = "/users/updatePass") + @ApiOperation("修改密码") + @PostMapping(value = "/updatePass") public ResponseEntity updatePass(@RequestBody UserPassVo user){ UserDetails userDetails = SecurityUtils.getUserDetails(); if(!userDetails.getPassword().equals(EncryptUtils.encryptPassword(user.getOldPass()))){ @@ -149,25 +150,16 @@ public class UserController { return new ResponseEntity(HttpStatus.OK); } - /** - * 修改头像 - * @param file - * @return - */ - @PostMapping(value = "/users/updateAvatar") + @ApiOperation("修改头像") + @PostMapping(value = "/updateAvatar") public ResponseEntity updateAvatar(@RequestParam MultipartFile file){ userService.updateAvatar(file); return new ResponseEntity(HttpStatus.OK); } - /** - * 修改邮箱 - * @param user - * @param user - * @return - */ @Log("修改邮箱") - @PostMapping(value = "/users/updateEmail/{code}") + @ApiOperation("修改邮箱") + @PostMapping(value = "/updateEmail/{code}") public ResponseEntity updateEmail(@PathVariable String code,@RequestBody User user){ UserDetails userDetails = SecurityUtils.getUserDetails(); if(!userDetails.getPassword().equals(EncryptUtils.encryptPassword(user.getPassword()))){ @@ -183,7 +175,7 @@ public class UserController { /** * 如果当前用户的角色级别低于创建用户的角色级别,则抛出权限不足的错误 - * @param resources + * @param resources / */ private void checkLevel(User resources) { Integer currentLevel = Collections.min(roleService.findByUsers_Id(SecurityUtils.getUserId()).stream().map(RoleSmallDTO::getLevel).collect(Collectors.toList())); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java index 792ea137..e648474b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java @@ -3,10 +3,6 @@ package me.zhengjie.modules.system.service; import me.zhengjie.modules.system.domain.Dept; import me.zhengjie.modules.system.service.dto.DeptDTO; import me.zhengjie.modules.system.service.dto.DeptQueryCriteria; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; - import java.util.List; import java.util.Set; @@ -14,61 +10,20 @@ import java.util.Set; * @author Zheng Jie * @date 2019-03-25 */ -@CacheConfig(cacheNames = "dept") public interface DeptService { - /** - * queryAll - * @param criteria - * @return - */ - @Cacheable List queryAll(DeptQueryCriteria criteria); - /** - * findById - * @param id - * @return - */ - @Cacheable(key = "#p0") DeptDTO findById(Long id); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) DeptDTO create(Dept resources); - /** - * update - * @param resources - */ - @CacheEvict(allEntries = true) void update(Dept resources); - /** - * delete - * @param id - */ - @CacheEvict(allEntries = true) void delete(Long id); - /** - * buildTree - * @param deptDTOS - * @return - */ - @Cacheable Object buildTree(List deptDTOS); - /** - * findByPid - * @param pid - * @return - */ - @Cacheable List findByPid(long pid); Set findByRoleIds(Long id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictDetailService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictDetailService.java index fe89a027..f6811ded 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictDetailService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictDetailService.java @@ -3,50 +3,22 @@ package me.zhengjie.modules.system.service; import me.zhengjie.modules.system.domain.DictDetail; import me.zhengjie.modules.system.service.dto.DictDetailDTO; import me.zhengjie.modules.system.service.dto.DictDetailQueryCriteria; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; - import java.util.Map; /** * @author Zheng Jie * @date 2019-04-10 */ -@CacheConfig(cacheNames = "dictDetail") public interface DictDetailService { - /** - * findById - * @param id - * @return - */ - @Cacheable(key = "#p0") DictDetailDTO findById(Long id); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) DictDetailDTO create(DictDetail resources); - /** - * update - * @param resources - */ - @CacheEvict(allEntries = true) void update(DictDetail resources); - /** - * delete - * @param id - */ - @CacheEvict(allEntries = true) void delete(Long id); - @Cacheable Map queryAll(DictDetailQueryCriteria criteria, Pageable pageable); } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictService.java index e6f10538..55d33442 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictService.java @@ -3,54 +3,21 @@ package me.zhengjie.modules.system.service; import me.zhengjie.modules.system.domain.Dict; import me.zhengjie.modules.system.service.dto.DictDTO; import me.zhengjie.modules.system.service.dto.DictQueryCriteria; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; /** * @author Zheng Jie * @date 2019-04-10 */ -@CacheConfig(cacheNames = "dict") public interface DictService { - /** - * 查询 - * @param dict - * @param pageable - * @return - */ - @Cacheable Object queryAll(DictQueryCriteria dict, Pageable pageable); - /** - * findById - * @param id - * @return - */ - @Cacheable(key = "#p0") DictDTO findById(Long id); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) DictDTO create(Dict resources); - /** - * update - * @param resources - */ - @CacheEvict(allEntries = true) void update(Dict resources); - /** - * delete - * @param id - */ - @CacheEvict(allEntries = true) void delete(Long id); } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/JobService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/JobService.java index ecd92a04..03f18aa3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/JobService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/JobService.java @@ -3,53 +3,21 @@ package me.zhengjie.modules.system.service; import me.zhengjie.modules.system.domain.Job; import me.zhengjie.modules.system.service.dto.JobDTO; import me.zhengjie.modules.system.service.dto.JobQueryCriteria; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; /** * @author Zheng Jie * @date 2019-03-29 */ -@CacheConfig(cacheNames = "job") public interface JobService { - /** - * findById - * @param id - * @return - */ - @Cacheable(key = "#p0") JobDTO findById(Long id); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) JobDTO create(Job resources); - /** - * update - * @param resources - */ - @CacheEvict(allEntries = true) void update(Job resources); - /** - * delete - * @param id - */ - @CacheEvict(allEntries = true) void delete(Long id); - /** - * queryAll - * @param criteria - * @param pageable - * @return - */ Object queryAll(JobQueryCriteria criteria, Pageable pageable); } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java index 3958c05f..3ca9d2b4 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java @@ -4,9 +4,6 @@ import me.zhengjie.modules.system.domain.Menu; import me.zhengjie.modules.system.service.dto.MenuDTO; import me.zhengjie.modules.system.service.dto.MenuQueryCriteria; import me.zhengjie.modules.system.service.dto.RoleSmallDTO; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import java.util.List; import java.util.Map; import java.util.Set; @@ -15,90 +12,29 @@ import java.util.Set; * @author Zheng Jie * @date 2018-12-17 */ -@CacheConfig(cacheNames = "menu") public interface MenuService { - /** - * queryAll - * @param criteria - * @return - */ - @Cacheable List queryAll(MenuQueryCriteria criteria); - /** - * get - * @param id - * @return - */ - @Cacheable(key = "#p0") MenuDTO findById(long id); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) MenuDTO create(Menu resources); - /** - * update - * @param resources - */ - @CacheEvict(allEntries = true) void update(Menu resources); - /** - * getDeleteMenus - * @param menuList - * @param menuSet - * @return - */ Set getDeleteMenus(List menuList, Set menuSet); - /** - * permission tree - * @return - */ - @Cacheable(key = "'tree'") Object getMenuTree(List menus); - /** - * findByPid - * @param pid - * @return - */ - @Cacheable(key = "'pid:'+#p0") List findByPid(long pid); - /** - * build Tree - * @param menuDTOS - * @return - */ - Map buildTree(List menuDTOS); + Map buildTree(List menuDTOS); - /** - * findByRoles - * @param roles - * @return - */ List findByRoles(List roles); - /** - * buildMenus - * @param byRoles - * @return - */ Object buildMenus(List byRoles); Menu findOne(Long id); - /** - * delete - * @param menuSet - */ - @CacheEvict(allEntries = true) void delete(Set menuSet); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/PermissionService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/PermissionService.java index ec6ebc23..e83b9df6 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/PermissionService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/PermissionService.java @@ -3,10 +3,6 @@ package me.zhengjie.modules.system.service; import me.zhengjie.modules.system.domain.Permission; import me.zhengjie.modules.system.service.dto.PermissionDTO; import me.zhengjie.modules.system.service.dto.PermissionQueryCriteria; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; - import java.util.List; import java.util.Set; @@ -14,68 +10,22 @@ import java.util.Set; * @author Zheng Jie * @date 2018-12-08 */ -@CacheConfig(cacheNames = "permission") public interface PermissionService { - /** - * get - * @param id - * @return - */ - @Cacheable(key = "#p0") PermissionDTO findById(long id); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) PermissionDTO create(Permission resources); - /** - * update - * @param resources - */ - @CacheEvict(allEntries = true) void update(Permission resources); - /** - * delete - * @param permissions - */ - @CacheEvict(allEntries = true) void delete(Set permissions); - /** - * permission tree - * @return - */ - @Cacheable(key = "'tree'") Object getPermissionTree(List permissions); - /** - * findByPid - * @param pid - * @return - */ - @Cacheable(key = "'pid:'+#p0") List findByPid(long pid); - /** - * build Tree - * @param permissionDTOS - * @return - */ - @Cacheable Object buildTree(List permissionDTOS); - /** - * queryAll - * @param criteria - * @return - */ - @Cacheable List queryAll(PermissionQueryCriteria criteria); Set getDeletePermission(List permissions, Set permissionSet); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java index 39973fce..c65be1fb 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java @@ -4,11 +4,7 @@ import me.zhengjie.modules.system.domain.Role; import me.zhengjie.modules.system.service.dto.RoleDTO; import me.zhengjie.modules.system.service.dto.RoleQueryCriteria; import me.zhengjie.modules.system.service.dto.RoleSmallDTO; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; - import java.util.List; import java.util.Set; @@ -16,95 +12,31 @@ import java.util.Set; * @author Zheng Jie * @date 2018-12-03 */ -@CacheConfig(cacheNames = "role") public interface RoleService { - /** - * get - * @param id - * @return - */ - @Cacheable(key = "#p0") RoleDTO findById(long id); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) RoleDTO create(Role resources); - /** - * update - * @param resources - */ - @CacheEvict(allEntries = true) void update(Role resources); - /** - * delete - * @param id - */ - @CacheEvict(allEntries = true) void delete(Long id); - /** - * key的名称如有修改,请同步修改 UserServiceImpl 中的 update 方法 - * findByUsers_Id - * @param id - * @return - */ - @Cacheable(key = "'findByUsers_Id:' + #p0") List findByUsers_Id(Long id); - @Cacheable Integer findByRoles(Set roles); - /** - * updatePermission - * @param resources - * @param roleDTO - */ - @CacheEvict(allEntries = true) void updatePermission(Role resources, RoleDTO roleDTO); - /** - * updateMenu - * @param resources - * @param roleDTO - */ - @CacheEvict(allEntries = true) void updateMenu(Role resources, RoleDTO roleDTO); - @CacheEvict(allEntries = true) void untiedMenu(Long id); - /** - * queryAll - * @param pageable - * @return - */ - @Cacheable Object queryAll(Pageable pageable); - /** - * queryAll - * @param pageable - * @param criteria - * @return - */ - @Cacheable Object queryAll(RoleQueryCriteria criteria, Pageable pageable); - /** - * queryAll - * @param criteria - * @return - */ - @Cacheable List queryAll(RoleQueryCriteria criteria); - @CacheEvict(allEntries = true) void untiedPermission(Long id); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java index bedae91a..c404900b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java @@ -1,15 +1,10 @@ package me.zhengjie.modules.system.service; import me.zhengjie.modules.system.domain.User; -import me.zhengjie.modules.security.security.JwtUser; import me.zhengjie.modules.system.service.dto.UserDTO; import me.zhengjie.modules.system.service.dto.UserQueryCriteria; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; import org.springframework.web.multipart.MultipartFile; - import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; @@ -18,74 +13,26 @@ import java.util.List; * @author Zheng Jie * @date 2018-11-23 */ -@CacheConfig(cacheNames = "user") public interface UserService { - /** - * get - * @param id - * @return - */ - @Cacheable(key = "#p0") UserDTO findById(long id); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) UserDTO create(User resources); - /** - * update - * @param resources - */ - @CacheEvict(allEntries = true) void update(User resources); - /** - * delete - * @param id - */ - @CacheEvict(allEntries = true) void delete(Long id); - /** - * findByName - * @param userName - * @return - */ - @Cacheable(key = "'loadUserByUsername:'+#p0") UserDTO findByName(String userName); - /** - * 修改密码 - * @param username - * @param encryptPassword - */ - @CacheEvict(allEntries = true) void updatePass(String username, String encryptPassword); - /** - * 修改头像 - * @param file - */ - @CacheEvict(allEntries = true) void updateAvatar(MultipartFile file); - /** - * 修改邮箱 - * @param username - * @param email - */ - @CacheEvict(allEntries = true) void updateEmail(String username, String email); - @Cacheable Object queryAll(UserQueryCriteria criteria, Pageable pageable); - @Cacheable List queryAll(UserQueryCriteria criteria); void download(List queryAll, HttpServletResponse response) throws IOException; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDTO.java index 47e808ee..23f151e1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDTO.java @@ -15,22 +15,16 @@ import java.util.List; @Data public class DeptDTO implements Serializable { - /** - * ID - */ + // ID private Long id; - /** - * 名称 - */ + // 名称 private String name; @NotNull private Boolean enabled; - /** - * 上级部门 - */ + // 上级部门 private Long pid; @JsonInclude(JsonInclude.Include.NON_EMPTY) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDTO.java index 10620264..0956825d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDTO.java @@ -10,13 +10,7 @@ import java.io.Serializable; @Data public class DeptSmallDTO implements Serializable { - /** - * ID - */ private Long id; - /** - * 名称 - */ private String name; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDTO.java index a96a4895..e05ff4e8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDTO.java @@ -12,13 +12,7 @@ public class DictDTO implements Serializable { private Long id; - /** - * 字典名称 - */ private String name; - /** - * 描述 - */ private String remark; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDTO.java index b39fbb26..71add096 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDTO.java @@ -12,18 +12,9 @@ public class DictDetailDTO implements Serializable { private Long id; - /** - * 字典标签 - */ private String label; - /** - * 字典值 - */ private String value; - /** - * 排序 - */ private String sort; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java index d61c5ee5..c9c1259f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java @@ -16,33 +16,18 @@ import java.io.Serializable; @NoArgsConstructor public class JobDTO implements Serializable { - /** - * ID - */ private Long id; private Long sort; - /** - * 名称 - */ private String name; - /** - * 状态 - */ private Boolean enabled; private DeptDTO dept; - /** - * 如果分公司存在相同部门,则显示上级部门名称 - */ private String deptSuperiorName; - /** - * 创建日期 - */ private Timestamp createTime; public JobDTO(String name, Boolean enabled) { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobSmallDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobSmallDTO.java index 2a364547..53c7c923 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobSmallDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobSmallDTO.java @@ -12,13 +12,7 @@ import java.io.Serializable; @NoArgsConstructor public class JobSmallDTO implements Serializable { - /** - * ID - */ private Long id; - /** - * 名称 - */ private String name; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java index f56e1903..88b2efc2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java @@ -9,7 +9,9 @@ import me.zhengjie.modules.system.repository.DeptRepository; import me.zhengjie.modules.system.service.DeptService; import me.zhengjie.modules.system.service.dto.DeptDTO; import me.zhengjie.modules.system.service.mapper.DeptMapper; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -22,28 +24,35 @@ import java.util.stream.Collectors; * @date 2019-03-25 */ @Service +@CacheConfig(cacheNames = "dept") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class DeptServiceImpl implements DeptService { - @Autowired - private DeptRepository deptRepository; + private final DeptRepository deptRepository; - @Autowired - private DeptMapper deptMapper; + private final DeptMapper deptMapper; + + public DeptServiceImpl(DeptRepository deptRepository, DeptMapper deptMapper) { + this.deptRepository = deptRepository; + this.deptMapper = deptMapper; + } @Override + @Cacheable public List queryAll(DeptQueryCriteria criteria) { return deptMapper.toDto(deptRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); } @Override + @Cacheable(key = "#p0") public DeptDTO findById(Long id) { - Optional dept = deptRepository.findById(id); - ValidationUtil.isNull(dept,"Dept","id",id); - return deptMapper.toDto(dept.get()); + Dept dept = deptRepository.findById(id).orElseGet(Dept::new); + ValidationUtil.isNull(dept.getId(),"Dept","id",id); + return deptMapper.toDto(dept); } @Override + @Cacheable public List findByPid(long pid) { return deptRepository.findByPid(pid); } @@ -54,11 +63,12 @@ public class DeptServiceImpl implements DeptService { } @Override + @Cacheable public Object buildTree(List deptDTOS) { Set trees = new LinkedHashSet<>(); Set depts= new LinkedHashSet<>(); List deptNames = deptDTOS.stream().map(DeptDTO::getName).collect(Collectors.toList()); - Boolean isChild; + boolean isChild; for (DeptDTO deptDTO : deptDTOS) { isChild = false; if ("0".equals(deptDTO.getPid().toString())) { @@ -68,7 +78,7 @@ public class DeptServiceImpl implements DeptService { if (it.getPid().equals(deptDTO.getId())) { isChild = true; if (deptDTO.getChildren() == null) { - deptDTO.setChildren(new ArrayList()); + deptDTO.setChildren(new ArrayList<>()); } deptDTO.getChildren().add(it); } @@ -83,34 +93,36 @@ public class DeptServiceImpl implements DeptService { trees = depts; } - Integer totalElements = deptDTOS!=null?deptDTOS.size():0; + Integer totalElements = deptDTOS.size(); - Map map = new HashMap(); + Map map = new HashMap<>(); map.put("totalElements",totalElements); map.put("content",CollectionUtils.isEmpty(trees)?deptDTOS:trees); return map; } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public DeptDTO create(Dept resources) { return deptMapper.toDto(deptRepository.save(resources)); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(Dept resources) { if(resources.getId().equals(resources.getPid())) { throw new BadRequestException("上级不能为自己"); } - Optional optionalDept = deptRepository.findById(resources.getId()); - ValidationUtil.isNull( optionalDept,"Dept","id",resources.getId()); - Dept dept = optionalDept.get(); + Dept dept = deptRepository.findById(resources.getId()).orElseGet(Dept::new); + ValidationUtil.isNull( dept.getId(),"Dept","id",resources.getId()); resources.setId(dept.getId()); deptRepository.save(resources); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Long id) { deptRepository.deleteById(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java index d8970219..a977dfe1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java @@ -9,7 +9,9 @@ import me.zhengjie.modules.system.repository.DictDetailRepository; import me.zhengjie.modules.system.service.DictDetailService; import me.zhengjie.modules.system.service.dto.DictDetailDTO; import me.zhengjie.modules.system.service.mapper.DictDetailMapper; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -24,45 +26,53 @@ import java.util.Optional; * @date 2019-04-10 */ @Service +@CacheConfig(cacheNames = "dictDetail") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class DictDetailServiceImpl implements DictDetailService { - @Autowired - private DictDetailRepository dictDetailRepository; + private final DictDetailRepository dictDetailRepository; - @Autowired - private DictDetailMapper dictDetailMapper; + private final DictDetailMapper dictDetailMapper; + + public DictDetailServiceImpl(DictDetailRepository dictDetailRepository, DictDetailMapper dictDetailMapper) { + this.dictDetailRepository = dictDetailRepository; + this.dictDetailMapper = dictDetailMapper; + } @Override + @Cacheable public Map queryAll(DictDetailQueryCriteria criteria, Pageable pageable) { Page page = dictDetailRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); return PageUtil.toPage(page.map(dictDetailMapper::toDto)); } @Override + @Cacheable(key = "#p0") public DictDetailDTO findById(Long id) { - Optional dictDetail = dictDetailRepository.findById(id); - ValidationUtil.isNull(dictDetail,"DictDetail","id",id); - return dictDetailMapper.toDto(dictDetail.get()); + DictDetail dictDetail = dictDetailRepository.findById(id).orElseGet(DictDetail::new); + ValidationUtil.isNull(dictDetail.getId(),"DictDetail","id",id); + return dictDetailMapper.toDto(dictDetail); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public DictDetailDTO create(DictDetail resources) { return dictDetailMapper.toDto(dictDetailRepository.save(resources)); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(DictDetail resources) { - Optional optionalDictDetail = dictDetailRepository.findById(resources.getId()); - ValidationUtil.isNull( optionalDictDetail,"DictDetail","id",resources.getId()); - DictDetail dictDetail = optionalDictDetail.get(); + DictDetail dictDetail = dictDetailRepository.findById(resources.getId()).orElseGet(DictDetail::new); + ValidationUtil.isNull( dictDetail.getId(),"DictDetail","id",resources.getId()); resources.setId(dictDetail.getId()); dictDetailRepository.save(resources); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Long id) { dictDetailRepository.deleteById(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java index 12ad1da0..06a45874 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java @@ -9,58 +9,67 @@ import me.zhengjie.modules.system.repository.DictRepository; import me.zhengjie.modules.system.service.DictService; import me.zhengjie.modules.system.service.dto.DictDTO; import me.zhengjie.modules.system.service.mapper.DictMapper; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import java.util.Optional; /** * @author Zheng Jie * @date 2019-04-10 */ @Service +@CacheConfig(cacheNames = "dict") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class DictServiceImpl implements DictService { - @Autowired - private DictRepository dictRepository; + private final DictRepository dictRepository; - @Autowired - private DictMapper dictMapper; + private final DictMapper dictMapper; + + public DictServiceImpl(DictRepository dictRepository, DictMapper dictMapper) { + this.dictRepository = dictRepository; + this.dictMapper = dictMapper; + } @Override + @Cacheable public Object queryAll(DictQueryCriteria dict, Pageable pageable){ Page page = dictRepository.findAll((root, query, cb) -> QueryHelp.getPredicate(root, dict, cb), pageable); return PageUtil.toPage(page.map(dictMapper::toDto)); } @Override + @Cacheable(key = "#p0") public DictDTO findById(Long id) { - Optional dict = dictRepository.findById(id); - ValidationUtil.isNull(dict,"Dict","id",id); - return dictMapper.toDto(dict.get()); + Dict dict = dictRepository.findById(id).orElseGet(Dict::new); + ValidationUtil.isNull(dict.getId(),"Dict","id",id); + return dictMapper.toDto(dict); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public DictDTO create(Dict resources) { return dictMapper.toDto(dictRepository.save(resources)); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(Dict resources) { - Optional optionalDict = dictRepository.findById(resources.getId()); - ValidationUtil.isNull( optionalDict,"Dict","id",resources.getId()); - Dict dict = optionalDict.get(); + Dict dict = dictRepository.findById(resources.getId()).orElseGet(Dict::new); + ValidationUtil.isNull( dict.getId(),"Dict","id",resources.getId()); resources.setId(dict.getId()); dictRepository.save(resources); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Long id) { dictRepository.deleteById(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java index 64c90972..27f72dd1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java @@ -10,7 +10,9 @@ import me.zhengjie.modules.system.repository.JobRepository; import me.zhengjie.modules.system.service.JobService; import me.zhengjie.modules.system.service.dto.JobDTO; import me.zhengjie.modules.system.service.mapper.JobMapper; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -18,24 +20,27 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; -import java.util.Optional; /** * @author Zheng Jie * @date 2019-03-29 */ @Service +@CacheConfig(cacheNames = "job") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class JobServiceImpl implements JobService { - @Autowired - private JobRepository jobRepository; + private final JobRepository jobRepository; - @Autowired - private JobMapper jobMapper; + private final JobMapper jobMapper; - @Autowired - private DeptRepository deptRepository; + private final DeptRepository deptRepository; + + public JobServiceImpl(JobRepository jobRepository, JobMapper jobMapper, DeptRepository deptRepository) { + this.jobRepository = jobRepository; + this.jobMapper = jobMapper; + this.deptRepository = deptRepository; + } @Override public Object queryAll(JobQueryCriteria criteria, Pageable pageable) { @@ -48,30 +53,32 @@ public class JobServiceImpl implements JobService { } @Override + @Cacheable(key = "#p0") public JobDTO findById(Long id) { - Optional job = jobRepository.findById(id); - ValidationUtil.isNull(job,"Job","id",id); - return jobMapper.toDto(job.get()); + Job job = jobRepository.findById(id).orElseGet(Job::new); + ValidationUtil.isNull(job.getId(),"Job","id",id); + return jobMapper.toDto(job); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public JobDTO create(Job resources) { return jobMapper.toDto(jobRepository.save(resources)); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(Job resources) { - Optional optionalJob = jobRepository.findById(resources.getId()); - ValidationUtil.isNull( optionalJob,"Job","id",resources.getId()); - - Job job = optionalJob.get(); + Job job = jobRepository.findById(resources.getId()).orElseGet(Job::new); + ValidationUtil.isNull( job.getId(),"Job","id",resources.getId()); resources.setId(job.getId()); jobRepository.save(resources); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Long id) { jobRepository.deleteById(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java index 1f8afdf4..d78eadf1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java @@ -1,7 +1,6 @@ package me.zhengjie.modules.system.service.impl; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import me.zhengjie.modules.system.domain.Menu; import me.zhengjie.modules.system.domain.vo.MenuMetaVo; @@ -18,7 +17,9 @@ import me.zhengjie.modules.system.service.mapper.MenuMapper; import me.zhengjie.utils.QueryHelp; import me.zhengjie.utils.StringUtils; import me.zhengjie.utils.ValidationUtil; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -26,41 +27,48 @@ import java.util.*; import java.util.stream.Collectors; @Service +@CacheConfig(cacheNames = "menu") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class MenuServiceImpl implements MenuService { - @Autowired - private MenuRepository menuRepository; + private final MenuRepository menuRepository; - @Autowired - private MenuMapper menuMapper; + private final MenuMapper menuMapper; - @Autowired - private RoleService roleService; + private final RoleService roleService; + + public MenuServiceImpl(MenuRepository menuRepository, MenuMapper menuMapper, RoleService roleService) { + this.menuRepository = menuRepository; + this.menuMapper = menuMapper; + this.roleService = roleService; + } @Override - public List queryAll(MenuQueryCriteria criteria){ + @Cacheable + public List queryAll(MenuQueryCriteria criteria){ return menuMapper.toDto(menuRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); } @Override + @Cacheable(key = "#p0") public MenuDTO findById(long id) { - Optional menu = menuRepository.findById(id); - ValidationUtil.isNull(menu,"Menu","id",id); - return menuMapper.toDto(menu.get()); + Menu menu = menuRepository.findById(id).orElseGet(Menu::new); + ValidationUtil.isNull(menu.getId(),"Menu","id",id); + return menuMapper.toDto(menu); } @Override public List findByRoles(List roles) { Set menus = new LinkedHashSet<>(); for (RoleSmallDTO role : roles) { - List menus1 = menuRepository.findByRoles_IdOrderBySortAsc(role.getId()).stream().collect(Collectors.toList()); + List menus1 = new ArrayList<>(menuRepository.findByRoles_IdOrderBySortAsc(role.getId())); menus.addAll(menus1); } return menus.stream().map(menuMapper::toDto).collect(Collectors.toList()); } @Override + @CacheEvict(allEntries = true) public MenuDTO create(Menu resources) { if(menuRepository.findByName(resources.getName()) != null){ throw new EntityExistException(Menu.class,"name",resources.getName()); @@ -79,19 +87,19 @@ public class MenuServiceImpl implements MenuService { } @Override + @CacheEvict(allEntries = true) public void update(Menu resources) { if(resources.getId().equals(resources.getPid())) { throw new BadRequestException("上级不能为自己"); } - Optional optionalPermission = menuRepository.findById(resources.getId()); - ValidationUtil.isNull(optionalPermission,"Permission","id",resources.getId()); + Menu menu = menuRepository.findById(resources.getId()).orElseGet(Menu::new); + ValidationUtil.isNull(menu.getId(),"Permission","id",resources.getId()); if(resources.getIFrame()){ if (!(resources.getPath().toLowerCase().startsWith("http://")||resources.getPath().toLowerCase().startsWith("https://"))) { throw new BadRequestException("外链必须以http://或者https://开头"); } } - Menu menu = optionalPermission.get(); Menu menu1 = menuRepository.findByName(resources.getName()); if(menu1 != null && !menu1.getId().equals(menu.getId())){ @@ -131,6 +139,7 @@ public class MenuServiceImpl implements MenuService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Set menuSet) { for (Menu menu : menuSet) { @@ -140,6 +149,7 @@ public class MenuServiceImpl implements MenuService { } @Override + @Cacheable(key = "'tree'") public Object getMenuTree(List menus) { List> list = new LinkedList<>(); menus.forEach(menu -> { @@ -159,13 +169,14 @@ public class MenuServiceImpl implements MenuService { } @Override + @Cacheable(key = "'pid:'+#p0") public List findByPid(long pid) { return menuRepository.findByPid(pid); } @Override - public Map buildTree(List menuDTOS) { - List trees = new ArrayList(); + public Map buildTree(List menuDTOS) { + List trees = new ArrayList<>(); Set ids = new HashSet<>(); for (MenuDTO menuDTO : menuDTOS) { if (menuDTO.getPid() == 0) { @@ -174,19 +185,19 @@ public class MenuServiceImpl implements MenuService { for (MenuDTO it : menuDTOS) { if (it.getPid().equals(menuDTO.getId())) { if (menuDTO.getChildren() == null) { - menuDTO.setChildren(new ArrayList()); + menuDTO.setChildren(new ArrayList<>()); } menuDTO.getChildren().add(it); ids.add(it.getId()); } } } - Map map = new HashMap(); + Map map = new HashMap<>(); if(trees.size() == 0){ trees = menuDTOS.stream().filter(s -> !ids.contains(s.getId())).collect(Collectors.toList()); } map.put("content",trees); - map.put("totalElements",menuDTOS!=null?menuDTOS.size():0); + map.put("totalElements", menuDTOS.size()); return map; } @@ -229,7 +240,7 @@ public class MenuServiceImpl implements MenuService { menuVo.setName(null); menuVo.setMeta(null); menuVo.setComponent("Layout"); - List list1 = new ArrayList(); + List list1 = new ArrayList<>(); list1.add(menuVo1); menuVo.setChildren(list1); } @@ -242,8 +253,8 @@ public class MenuServiceImpl implements MenuService { @Override public Menu findOne(Long id) { - Optional menu = menuRepository.findById(id); - ValidationUtil.isNull(menu,"Menu","id",id); - return menu.get(); + Menu menu = menuRepository.findById(id).orElseGet(Menu::new); + ValidationUtil.isNull(menu.getId(),"Menu","id",id); + return menu; } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java index e8c48c76..f1ed9e28 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java @@ -11,7 +11,9 @@ import me.zhengjie.modules.system.service.dto.PermissionQueryCriteria; import me.zhengjie.modules.system.service.mapper.PermissionMapper; import me.zhengjie.utils.QueryHelp; import me.zhengjie.utils.ValidationUtil; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -22,31 +24,38 @@ import java.util.*; * @date 2018-12-03 */ @Service +@CacheConfig(cacheNames = "permission") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class PermissionServiceImpl implements PermissionService { - @Autowired - private PermissionRepository permissionRepository; + private final PermissionRepository permissionRepository; - @Autowired - private PermissionMapper permissionMapper; + private final PermissionMapper permissionMapper; - @Autowired - private RoleService roleService; + private final RoleService roleService; + + public PermissionServiceImpl(PermissionRepository permissionRepository, PermissionMapper permissionMapper, RoleService roleService) { + this.permissionRepository = permissionRepository; + this.permissionMapper = permissionMapper; + this.roleService = roleService; + } @Override + @Cacheable public List queryAll(PermissionQueryCriteria criteria) { return permissionMapper.toDto(permissionRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); } @Override + @Cacheable(key = "#p0") public PermissionDTO findById(long id) { - Optional permission = permissionRepository.findById(id); - ValidationUtil.isNull(permission,"Permission","id",id); - return permissionMapper.toDto(permission.get()); + Permission permission = permissionRepository.findById(id).orElseGet(Permission::new); + ValidationUtil.isNull(permission.getId(),"Permission","id",id); + return permissionMapper.toDto(permission); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public PermissionDTO create(Permission resources) { if(permissionRepository.findByName(resources.getName()) != null){ @@ -56,15 +65,14 @@ public class PermissionServiceImpl implements PermissionService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(Permission resources) { - Optional optionalPermission = permissionRepository.findById(resources.getId()); + Permission permission = permissionRepository.findById(resources.getId()).orElseGet(Permission::new); if(resources.getId().equals(resources.getPid())) { throw new BadRequestException("上级不能为自己"); } - ValidationUtil.isNull(optionalPermission,"Permission","id",resources.getId()); - - Permission permission = optionalPermission.get(); + ValidationUtil.isNull(permission.getId(),"Permission","id",resources.getId()); Permission permission1 = permissionRepository.findByName(resources.getName()); @@ -92,6 +100,7 @@ public class PermissionServiceImpl implements PermissionService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Set permissions) { for (Permission permission : permissions) { @@ -101,6 +110,7 @@ public class PermissionServiceImpl implements PermissionService { } @Override + @Cacheable(key = "'tree'") public Object getPermissionTree(List permissions) { List> list = new LinkedList<>(); permissions.forEach(permission -> { @@ -120,14 +130,16 @@ public class PermissionServiceImpl implements PermissionService { } @Override + @Cacheable(key = "'pid:'+#p0") public List findByPid(long pid) { return permissionRepository.findByPid(pid); } @Override + @Cacheable public Object buildTree(List permissionDTOS) { - List trees = new ArrayList(); + List trees = new ArrayList<>(); for (PermissionDTO permissionDTO : permissionDTOS) { @@ -138,16 +150,16 @@ public class PermissionServiceImpl implements PermissionService { for (PermissionDTO it : permissionDTOS) { if (it.getPid().equals(permissionDTO.getId())) { if (permissionDTO.getChildren() == null) { - permissionDTO.setChildren(new ArrayList()); + permissionDTO.setChildren(new ArrayList<>()); } permissionDTO.getChildren().add(it); } } } - Integer totalElements = permissionDTOS!=null?permissionDTOS.size():0; + Integer totalElements = permissionDTOS.size(); - Map map = new HashMap(); + Map map = new HashMap<>(); map.put("content",trees.size() == 0?permissionDTOS:trees); map.put("totalElements",totalElements); return map; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java index bc33f266..d1aaca57 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java @@ -12,7 +12,9 @@ import me.zhengjie.modules.system.service.mapper.RoleSmallMapper; import me.zhengjie.utils.PageUtil; import me.zhengjie.utils.QueryHelp; import me.zhengjie.utils.ValidationUtil; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -26,42 +28,51 @@ import java.util.stream.Collectors; * @date 2018-12-03 */ @Service +@CacheConfig(cacheNames = "role") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class RoleServiceImpl implements RoleService { - @Autowired - private RoleRepository roleRepository; + private final RoleRepository roleRepository; - @Autowired - private RoleMapper roleMapper; + private final RoleMapper roleMapper; - @Autowired - private RoleSmallMapper roleSmallMapper; + private final RoleSmallMapper roleSmallMapper; + + public RoleServiceImpl(RoleRepository roleRepository, RoleMapper roleMapper, RoleSmallMapper roleSmallMapper) { + this.roleRepository = roleRepository; + this.roleMapper = roleMapper; + this.roleSmallMapper = roleSmallMapper; + } @Override + @Cacheable public Object queryAll(Pageable pageable) { return roleMapper.toDto(roleRepository.findAll(pageable).getContent()); } @Override + @Cacheable public List queryAll(RoleQueryCriteria criteria) { return roleMapper.toDto(roleRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); } @Override + @Cacheable public Object queryAll(RoleQueryCriteria criteria, Pageable pageable) { Page page = roleRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); return PageUtil.toPage(page.map(roleMapper::toDto)); } @Override + @Cacheable(key = "#p0") public RoleDTO findById(long id) { - Optional role = roleRepository.findById(id); - ValidationUtil.isNull(role,"Role","id",id); - return roleMapper.toDto(role.get()); + Role role = roleRepository.findById(id).orElseGet(Role::new); + ValidationUtil.isNull(role.getId(),"Role","id",id); + return roleMapper.toDto(role); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public RoleDTO create(Role resources) { if(roleRepository.findByName(resources.getName()) != null){ @@ -71,13 +82,11 @@ public class RoleServiceImpl implements RoleService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(Role resources) { - - Optional optionalRole = roleRepository.findById(resources.getId()); - ValidationUtil.isNull(optionalRole,"Role","id",resources.getId()); - - Role role = optionalRole.get(); + Role role = roleRepository.findById(resources.getId()).orElseGet(Role::new); + ValidationUtil.isNull(role.getId(),"Role","id",resources.getId()); Role role1 = roleRepository.findByName(resources.getName()); @@ -94,6 +103,7 @@ public class RoleServiceImpl implements RoleService { } @Override + @CacheEvict(allEntries = true) public void updatePermission(Role resources, RoleDTO roleDTO) { Role role = roleMapper.toEntity(roleDTO); role.setPermissions(resources.getPermissions()); @@ -101,6 +111,7 @@ public class RoleServiceImpl implements RoleService { } @Override + @CacheEvict(allEntries = true) public void updateMenu(Role resources, RoleDTO roleDTO) { Role role = roleMapper.toEntity(roleDTO); role.setMenus(resources.getMenus()); @@ -108,29 +119,34 @@ public class RoleServiceImpl implements RoleService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void untiedMenu(Long id) { roleRepository.untiedMenu(id); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void untiedPermission(Long id) { roleRepository.untiedPermission(id); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Long id) { roleRepository.deleteById(id); } @Override + @Cacheable(key = "'findByUsers_Id:' + #p0") public List findByUsers_Id(Long id) { - return roleSmallMapper.toDto(roleRepository.findByUsers_Id(id).stream().collect(Collectors.toList())); + return roleSmallMapper.toDto(new ArrayList<>(roleRepository.findByUsers_Id(id))); } @Override + @Cacheable public Integer findByRoles(Set roles) { Set roleDTOS = new HashSet<>(); for (Role role : roles) { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java index 2685d743..ee64b6bb 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java @@ -1,8 +1,5 @@ package me.zhengjie.modules.system.service.impl; -import cn.hutool.core.io.IoUtil; -import cn.hutool.poi.excel.ExcelUtil; -import cn.hutool.poi.excel.ExcelWriter; import me.zhengjie.modules.monitor.service.RedisService; import me.zhengjie.modules.system.domain.User; import me.zhengjie.exception.EntityExistException; @@ -16,16 +13,16 @@ import me.zhengjie.modules.system.service.dto.UserDTO; import me.zhengjie.modules.system.service.dto.UserQueryCriteria; import me.zhengjie.modules.system.service.mapper.UserMapper; import me.zhengjie.utils.*; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; @@ -37,44 +34,52 @@ import java.util.stream.Collectors; * @date 2018-11-23 */ @Service +@CacheConfig(cacheNames = "user") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class UserServiceImpl implements UserService { - @Autowired - private UserRepository userRepository; + private final UserRepository userRepository; - @Autowired - private UserMapper userMapper; + private final UserMapper userMapper; - @Autowired - private RedisService redisService; + private final RedisService redisService; - @Autowired - private UserAvatarRepository userAvatarRepository; + private final UserAvatarRepository userAvatarRepository; @Value("${file.avatar}") private String avatar; + public UserServiceImpl(UserRepository userRepository, UserMapper userMapper, RedisService redisService, UserAvatarRepository userAvatarRepository) { + this.userRepository = userRepository; + this.userMapper = userMapper; + this.redisService = redisService; + this.userAvatarRepository = userAvatarRepository; + } + @Override + @Cacheable public Object queryAll(UserQueryCriteria criteria, Pageable pageable) { Page page = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); return PageUtil.toPage(page.map(userMapper::toDto)); } @Override + @Cacheable public List queryAll(UserQueryCriteria criteria) { List users = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)); return userMapper.toDto(users); } @Override + @Cacheable(key = "#p0") public UserDTO findById(long id) { - Optional user = userRepository.findById(id); - ValidationUtil.isNull(user,"User","id",id); - return userMapper.toDto(user.get()); + User user = userRepository.findById(id).orElseGet(User::new); + ValidationUtil.isNull(user.getId(),"User","id",id); + return userMapper.toDto(user); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public UserDTO create(User resources) { @@ -92,13 +97,11 @@ public class UserServiceImpl implements UserService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(User resources) { - Optional userOptional = userRepository.findById(resources.getId()); - ValidationUtil.isNull(userOptional,"User","id",resources.getId()); - - User user = userOptional.get(); - + User user = userRepository.findById(resources.getId()).orElseGet(User::new); + ValidationUtil.isNull(user.getId(),"User","id",resources.getId()); User user1 = userRepository.findByUsername(user.getUsername()); User user2 = userRepository.findByEmail(user.getEmail()); @@ -129,14 +132,16 @@ public class UserServiceImpl implements UserService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Long id) { userRepository.deleteById(id); } @Override + @Cacheable(key = "'loadUserByUsername:'+#p0") public UserDTO findByName(String userName) { - User user = null; + User user; if(ValidationUtil.isEmail(userName)){ user = userRepository.findByEmail(userName); } else { @@ -150,12 +155,14 @@ public class UserServiceImpl implements UserService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void updatePass(String username, String pass) { userRepository.updatePass(username,pass,new Date()); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void updateAvatar(MultipartFile multipartFile) { User user = userRepository.findByUsername(SecurityUtils.getUsername()); @@ -165,6 +172,7 @@ public class UserServiceImpl implements UserService { oldPath = userAvatar.getPath(); } File file = FileUtil.upload(multipartFile, avatar); + assert file != null; userAvatar = userAvatarRepository.save(new UserAvatar(userAvatar,file.getName(), file.getPath(), FileUtil.getSize(multipartFile.getSize()))); user.setUserAvatar(userAvatar); userRepository.save(user); @@ -174,6 +182,7 @@ public class UserServiceImpl implements UserService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void updateEmail(String username, String email) { userRepository.updateEmail(username,email); @@ -184,7 +193,7 @@ public class UserServiceImpl implements UserService { List> list = new ArrayList<>(); for (UserDTO userDTO : queryAll) { List roles = userDTO.getRoles().stream().map(RoleSmallDTO::getName).collect(Collectors.toList()); - Map map = new LinkedHashMap(); + Map map = new LinkedHashMap<>(); map.put("用户名", userDTO.getUsername()); map.put("头像", userDTO.getAvatar()); map.put("邮箱", userDTO.getEmail()); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptMapper.java index 46da4c2c..75eadbf5 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptMapper.java @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2019-03-25 */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface DeptMapper extends EntityMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptSmallMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptSmallMapper.java index 338d55a4..ede9aad3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptSmallMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptSmallMapper.java @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2019-03-25 */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface DeptSmallMapper extends EntityMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictDetailMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictDetailMapper.java index 797c1dab..7f483190 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictDetailMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictDetailMapper.java @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2019-04-10 */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface DictDetailMapper extends EntityMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictMapper.java index 1d1f93d5..ab5a4bd3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictMapper.java @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2019-04-10 */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface DictMapper extends EntityMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobSmallMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobSmallMapper.java index c48b4d36..425cb4a0 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobSmallMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobSmallMapper.java @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2019-03-29 */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface JobSmallMapper extends EntityMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuMapper.java index 513f1bc3..8cdaf63b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuMapper.java @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2018-12-17 */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface MenuMapper extends EntityMapper { } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleSmallMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleSmallMapper.java index c5858fb4..53d97ccb 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleSmallMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleSmallMapper.java @@ -11,7 +11,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2019-5-23 */ -@Mapper(componentModel = "spring", uses = {}, unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface RoleSmallMapper extends EntityMapper { } diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index 45b7a500..45635db2 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -47,11 +47,6 @@ jwt: secret: mySecret # token 过期时间 6个小时 expiration: 21000000 - auth: - # 授权路径 - path: /login - # 获取用户信息 - account: /info #是否允许生成代码,生产环境设置为false generator: diff --git a/eladmin-system/src/main/resources/config/application-prod.yml b/eladmin-system/src/main/resources/config/application-prod.yml index a1ae2b74..04ff30c8 100644 --- a/eladmin-system/src/main/resources/config/application-prod.yml +++ b/eladmin-system/src/main/resources/config/application-prod.yml @@ -49,11 +49,6 @@ jwt: secret: mySecret # token 过期时间 2个小时 expiration: 7200000 - auth: - # 授权路径 - path: /login - # 获取用户信息 - account: /info #是否允许生成代码,生产环境设置为false generator: diff --git a/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl b/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl index 9ec0b10c..8dbe6bc9 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl @@ -4,7 +4,6 @@ import me.zhengjie.aop.log.Log; import ${package}.domain.${className}; import ${package}.service.${className}Service; import ${package}.service.dto.${className}QueryCriteria; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -19,40 +18,43 @@ import io.swagger.annotations.*; */ @Api(tags = "${className}管理") @RestController -@RequestMapping("api") +@RequestMapping("/api/${changeClassName}") public class ${className}Controller { - @Autowired - private ${className}Service ${changeClassName}Service; + private final ${className}Service ${changeClassName}Service; + public ${className}Controller(${className}Service ${changeClassName}Service) { + this.${changeClassName}Service = ${changeClassName}Service; + } + + @GetMapping @Log("查询${className}") - @ApiOperation(value = "查询${className}") - @GetMapping(value = "/${changeClassName}") + @ApiOperation("查询${className}") @PreAuthorize("hasAnyRole('ADMIN','${upperCaseClassName}_ALL','${upperCaseClassName}_SELECT')") public ResponseEntity get${className}s(${className}QueryCriteria criteria, Pageable pageable){ - return new ResponseEntity(${changeClassName}Service.queryAll(criteria,pageable),HttpStatus.OK); + return new ResponseEntity<>(${changeClassName}Service.queryAll(criteria,pageable),HttpStatus.OK); } + @PostMapping @Log("新增${className}") - @ApiOperation(value = "新增${className}") - @PostMapping(value = "/${changeClassName}") + @ApiOperation("新增${className}") @PreAuthorize("hasAnyRole('ADMIN','${upperCaseClassName}_ALL','${upperCaseClassName}_CREATE')") public ResponseEntity create(@Validated @RequestBody ${className} resources){ - return new ResponseEntity(${changeClassName}Service.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(${changeClassName}Service.create(resources),HttpStatus.CREATED); } + @PutMapping @Log("修改${className}") - @ApiOperation(value = "修改${className}") - @PutMapping(value = "/${changeClassName}") + @ApiOperation("修改${className}") @PreAuthorize("hasAnyRole('ADMIN','${upperCaseClassName}_ALL','${upperCaseClassName}_EDIT')") public ResponseEntity update(@Validated @RequestBody ${className} resources){ ${changeClassName}Service.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); } + @DeleteMapping(value = "/{${pkChangeColName}}") @Log("删除${className}") - @ApiOperation(value = "删除${className}") - @DeleteMapping(value = "/${changeClassName}/{${pkChangeColName}}") + @ApiOperation("删除${className}") @PreAuthorize("hasAnyRole('ADMIN','${upperCaseClassName}_ALL','${upperCaseClassName}_DELETE')") public ResponseEntity delete(@PathVariable ${pkColumnType} ${pkChangeColName}){ ${changeClassName}Service.delete(${pkChangeColName}); diff --git a/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl b/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl index 2f067d30..bf4f3e90 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author ${author} * @date ${date} */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring", 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/QueryCriteria.ftl b/eladmin-system/src/main/resources/template/generator/admin/QueryCriteria.ftl index 514e92cd..2f5e20a7 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/QueryCriteria.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/QueryCriteria.ftl @@ -1,10 +1,10 @@ package ${package}.service.dto; import lombok.Data; -<#if hasTimestamp> +<#if queryHasTimestamp> import java.sql.Timestamp; -<#if hasBigDecimal> +<#if queryHasBigDecimal> import java.math.BigDecimal; <#if queryColumns??> diff --git a/eladmin-system/src/main/resources/template/generator/admin/Repository.ftl b/eladmin-system/src/main/resources/template/generator/admin/Repository.ftl index 9b896818..73d4e9e9 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/Repository.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/Repository.ftl @@ -8,16 +8,11 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; * @author ${author} * @date ${date} */ -public interface ${className}Repository extends JpaRepository<${className}, ${pkColumnType}>, JpaSpecificationExecutor { +public interface ${className}Repository extends JpaRepository<${className}, ${pkColumnType}>, JpaSpecificationExecutor<${className}> { <#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}); diff --git a/eladmin-system/src/main/resources/template/generator/admin/Service.ftl b/eladmin-system/src/main/resources/template/generator/admin/Service.ftl index ba236c16..3c04d747 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/Service.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/Service.ftl @@ -3,9 +3,6 @@ package ${package}.service; import ${package}.domain.${className}; import ${package}.service.dto.${className}DTO; import ${package}.service.dto.${className}QueryCriteria; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; import java.util.Map; import java.util.List; @@ -14,53 +11,33 @@ import java.util.List; * @author ${author} * @date ${date} */ -//@CacheConfig(cacheNames = "${changeClassName}") public interface ${className}Service { /** * 查询数据分页 - * @param criteria - * @param pageable - * @return + * @param criteria 条件参数 + * @param pageable 分页参数 + * @return Map */ - //@Cacheable Map queryAll(${className}QueryCriteria criteria, Pageable pageable); /** * 查询所有数据不分页 - * @param criteria - * @return + * @param criteria 条件参数 + * @return List<${className}DTO> */ - //@Cacheable List<${className}DTO> queryAll(${className}QueryCriteria criteria); /** * 根据ID查询 - * @param ${pkChangeColName} - * @return + * @param ${pkChangeColName} ID + * @return ${className}DTO */ - //@Cacheable(key = "#p0") ${className}DTO findById(${pkColumnType} ${pkChangeColName}); - /** - * 创建 - * @param resources - * @return - */ - //@CacheEvict(allEntries = true) ${className}DTO create(${className} resources); - /** - * 编辑 - * @param resources - */ - //@CacheEvict(allEntries = true) void update(${className} resources); - /** - * 删除 - * @param ${pkChangeColName} - */ - //@CacheEvict(allEntries = true) void delete(${pkColumnType} ${pkChangeColName}); } \ 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 index d22a9536..cf869c4d 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/ServiceImpl.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/ServiceImpl.ftl @@ -16,11 +16,9 @@ import ${package}.service.${className}Service; import ${package}.service.dto.${className}DTO; import ${package}.service.dto.${className}QueryCriteria; 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; <#if !auto && pkColumnType = 'Long'> import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.IdUtil; @@ -28,6 +26,9 @@ import cn.hutool.core.util.IdUtil; <#if !auto && pkColumnType = 'String'> import cn.hutool.core.util.IdUtil; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import me.zhengjie.utils.PageUtil; @@ -40,34 +41,42 @@ import java.util.Map; * @date ${date} */ @Service +@CacheConfig(cacheNames = "${changeClassName}") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class ${className}ServiceImpl implements ${className}Service { - @Autowired - private ${className}Repository ${changeClassName}Repository; + private final ${className}Repository ${changeClassName}Repository; - @Autowired - private ${className}Mapper ${changeClassName}Mapper; + private final ${className}Mapper ${changeClassName}Mapper; + + public ${className}ServiceImpl(${className}Repository ${changeClassName}Repository, ${className}Mapper ${changeClassName}Mapper) { + this.${changeClassName}Repository = ${changeClassName}Repository; + this.${changeClassName}Mapper = ${changeClassName}Mapper; + } @Override + @Cacheable public Map queryAll(${className}QueryCriteria criteria, Pageable pageable){ Page<${className}> page = ${changeClassName}Repository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); return PageUtil.toPage(page.map(${changeClassName}Mapper::toDto)); } @Override + @Cacheable public List<${className}DTO> queryAll(${className}QueryCriteria criteria){ return ${changeClassName}Mapper.toDto(${changeClassName}Repository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); } @Override + @Cacheable(key = "#p0") public ${className}DTO findById(${pkColumnType} ${pkChangeColName}) { - Optional<${className}> ${changeClassName} = ${changeClassName}Repository.findById(${pkChangeColName}); - ValidationUtil.isNull(${changeClassName},"${className}","${pkChangeColName}",${pkChangeColName}); - return ${changeClassName}Mapper.toDto(${changeClassName}.get()); + ${className} ${changeClassName} = ${changeClassName}Repository.findById(${pkChangeColName}).orElseGet(${className}::new); + ValidationUtil.isNull(${changeClassName}.get${pkCapitalColName}(),"${className}","${pkChangeColName}",${pkChangeColName}); + return ${changeClassName}Mapper.toDto(${changeClassName}); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public ${className}DTO create(${className} resources) { <#if !auto && pkColumnType = 'Long'> @@ -90,11 +99,11 @@ public class ${className}ServiceImpl implements ${className}Service { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(${className} resources) { - Optional<${className}> optional${className} = ${changeClassName}Repository.findById(resources.get${pkCapitalColName}()); - ValidationUtil.isNull( optional${className},"${className}","id",resources.get${pkCapitalColName}()); - ${className} ${changeClassName} = optional${className}.get(); + ${className} ${changeClassName} = ${changeClassName}Repository.findById(resources.get${pkCapitalColName}()).orElseGet(${className}::new); + ValidationUtil.isNull( ${changeClassName}.get${pkCapitalColName}(),"${className}","id",resources.get${pkCapitalColName}()); <#if columns??> <#list columns as column> <#if column.columnKey = 'UNI'> @@ -113,6 +122,7 @@ public class ${className}ServiceImpl implements ${className}Service { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(${pkColumnType} ${pkChangeColName}) { ${changeClassName}Repository.deleteById(${pkChangeColName}); diff --git a/eladmin-system/src/test/java/me/zhengjie/EladminSystemApplicationTests.java b/eladmin-system/src/test/java/me/zhengjie/EladminSystemApplicationTests.java index 3b6df74d..793ee5c1 100644 --- a/eladmin-system/src/test/java/me/zhengjie/EladminSystemApplicationTests.java +++ b/eladmin-system/src/test/java/me/zhengjie/EladminSystemApplicationTests.java @@ -13,6 +13,5 @@ public class EladminSystemApplicationTests { public void contextLoads() { } - } diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/Picture.java b/eladmin-tools/src/main/java/me/zhengjie/domain/Picture.java index 289cc08a..09a2867e 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/Picture.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/Picture.java @@ -41,6 +41,9 @@ public class Picture implements Serializable { @Column(name = "create_time") private Timestamp createTime; + // 用于检测文件是否重复 + private String md5Code; + @Override public String toString() { return "Picture{" + diff --git a/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java index 6f3fbc7b..60bdc609 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java @@ -9,4 +9,8 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; * @date 2018-12-27 */ public interface PictureRepository extends JpaRepository, JpaSpecificationExecutor { + + Picture findByUrl(String url); + + Picture findByMd5Code(String code); } diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java index 1bb063cb..ce0add9f 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java @@ -9,7 +9,6 @@ import me.zhengjie.domain.vo.TradeVo; import me.zhengjie.service.AlipayService; import me.zhengjie.utils.AliPayStatusEnum; import me.zhengjie.utils.AlipayUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; @@ -27,7 +26,7 @@ import java.util.Map; @Slf4j @RestController @RequestMapping("/api/aliPay") -@Api(tags = "支付宝支付管理") +@Api(tags = "工具:支付宝管理") public class AliPayController { private final AlipayUtils alipayUtils; @@ -45,6 +44,7 @@ public class AliPayController { } @Log("配置支付宝") + @ApiOperation("配置支付宝") @PutMapping public ResponseEntity payConfig(@Validated @RequestBody AlipayConfig alipayConfig){ alipayConfig.setId(1L); @@ -53,7 +53,7 @@ public class AliPayController { } @Log("支付宝PC网页支付") - @ApiOperation(value = "PC网页支付") + @ApiOperation("PC网页支付") @PostMapping(value = "/toPayAsPC") public ResponseEntity toPayAsPC(@Validated@RequestBody TradeVo trade) throws Exception{ AlipayConfig alipay = alipayService.find(); @@ -63,7 +63,7 @@ public class AliPayController { } @Log("支付宝手机网页支付") - @ApiOperation(value = "手机网页支付") + @ApiOperation("手机网页支付") @PostMapping(value = "/toPayAsWeb") public ResponseEntity toPayAsWeb(@Validated @RequestBody TradeVo trade) throws Exception{ AlipayConfig alipay = alipayService.find(); @@ -74,8 +74,8 @@ public class AliPayController { @ApiIgnore @GetMapping("/return") - @ApiOperation(value = "支付之后跳转的链接") - public ResponseEntity returnPage(HttpServletRequest request, HttpServletResponse response) throws Exception { + @ApiOperation("支付之后跳转的链接") + public ResponseEntity returnPage(HttpServletRequest request, HttpServletResponse response){ AlipayConfig alipay = alipayService.find(); response.setContentType("text/html;charset=" + alipay.getCharset()); //内容验签,防止黑客篡改参数 @@ -96,8 +96,8 @@ public class AliPayController { @ApiIgnore @RequestMapping("/notify") - @ApiOperation(value = "支付异步通知(要公网访问),接收异步通知,检查通知内容app_id、out_trade_no、total_amount是否与请求中的一致,根据trade_status进行后续业务处理") - public ResponseEntity notify(HttpServletRequest request) throws Exception{ + @ApiOperation("支付异步通知(要公网访问),接收异步通知,检查通知内容app_id、out_trade_no、total_amount是否与请求中的一致,根据trade_status进行后续业务处理") + public ResponseEntity notify(HttpServletRequest request){ AlipayConfig alipay = alipayService.find(); Map parameterMap = request.getParameterMap(); //内容验签,防止黑客篡改参数 @@ -111,9 +111,9 @@ public class AliPayController { //付款金额 String totalAmount = new String(request.getParameter("total_amount").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); //验证 -// if(tradeStatus.equals(AliPayStatusEnum.SUCCESS.getValue())||tradeStatus.equals(AliPayStatusEnum.FINISHED.getValue())){ -// // 验证通过后应该根据业务需要处理订单 -// } + if(tradeStatus.equals(AliPayStatusEnum.SUCCESS.getValue())||tradeStatus.equals(AliPayStatusEnum.FINISHED.getValue())){ + // 验证通过后应该根据业务需要处理订单 + } return new ResponseEntity(HttpStatus.OK); } return new ResponseEntity(HttpStatus.BAD_REQUEST); diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/EmailController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/EmailController.java index ff3f15f1..ade9d3ef 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/EmailController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/EmailController.java @@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.*; */ @RestController @RequestMapping("api/email") -@Api(tags = "邮件管理") +@Api(tags = "工具:邮件管理") public class EmailController { private final EmailService emailService; @@ -34,7 +34,7 @@ public class EmailController { @Log("配置邮件") @PutMapping - @ApiOperation(value = "配置邮件") + @ApiOperation("配置邮件") public ResponseEntity emailConfig(@Validated @RequestBody EmailConfig emailConfig){ emailService.update(emailConfig,emailService.find()); return new ResponseEntity(HttpStatus.OK); @@ -42,7 +42,7 @@ public class EmailController { @Log("发送邮件") @PostMapping - @ApiOperation(value = "发送邮件") + @ApiOperation("发送邮件") public ResponseEntity send(@Validated @RequestBody EmailVo emailVo) throws Exception { emailService.send(emailVo,emailService.find()); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java index 425cef30..c1508153 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java @@ -17,7 +17,7 @@ import org.springframework.web.multipart.MultipartFile; * @author Zheng Jie * @date 2019-09-05 */ -@Api(tags = "本地存储管理") +@Api(tags = "工具:本地存储管理") @RestController @RequestMapping("/api/localStorage") public class LocalStorageController { @@ -28,21 +28,21 @@ public class LocalStorageController { this.localStorageService = localStorageService; } - @ApiOperation(value = "查询文件") + @ApiOperation("查询文件") @GetMapping @PreAuthorize("hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_SELECT')") public ResponseEntity getLocalStorages(LocalStorageQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(localStorageService.queryAll(criteria,pageable),HttpStatus.OK); } - @ApiOperation(value = "上传文件") + @ApiOperation("上传文件") @PostMapping @PreAuthorize("hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_CREATE')") public ResponseEntity create(@RequestParam String name, @RequestParam("file") MultipartFile file){ return new ResponseEntity<>(localStorageService.create(name, file),HttpStatus.CREATED); } - @ApiOperation(value = "修改文件") + @ApiOperation("修改文件") @PutMapping @PreAuthorize("hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_EDIT')") public ResponseEntity update(@Validated @RequestBody LocalStorage resources){ @@ -50,7 +50,7 @@ public class LocalStorageController { return new ResponseEntity(HttpStatus.NO_CONTENT); } - @ApiOperation(value = "删除文件") + @ApiOperation("删除文件") @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_DELETE')") public ResponseEntity delete(@PathVariable Long id){ @@ -60,7 +60,7 @@ public class LocalStorageController { @Log("多选删除") @DeleteMapping - @ApiOperation(value = "多选删除") + @ApiOperation("多选删除") public ResponseEntity deleteAll(@RequestBody Long[] ids) { localStorageService.deleteAll(ids); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java index f5168f13..0c792d96 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java @@ -22,7 +22,7 @@ import java.util.Map; */ @RestController @RequestMapping("/api/pictures") -@Api(tags = "免费图床管理") +@Api(tags = "工具:免费图床管理") public class PictureController { private final PictureService pictureService; @@ -34,7 +34,7 @@ public class PictureController { @Log("查询图片") @PreAuthorize("hasAnyRole('ADMIN','PICTURE_ALL','PICTURE_SELECT')") @GetMapping - @ApiOperation(value = "查询图片") + @ApiOperation("查询图片") public ResponseEntity getRoles(PictureQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(pictureService.queryAll(criteria,pageable),HttpStatus.OK); } @@ -42,7 +42,7 @@ public class PictureController { @Log("上传图片") @PreAuthorize("hasAnyRole('ADMIN','PICTURE_ALL','PICTURE_UPLOAD')") @PostMapping - @ApiOperation(value = "上传图片") + @ApiOperation("上传图片") public ResponseEntity upload(@RequestParam MultipartFile file){ String userName = SecurityUtils.getUsername(); Picture picture = pictureService.upload(file,userName); @@ -54,7 +54,7 @@ public class PictureController { } @Log("删除图片") - @ApiOperation(value = "删除图片") + @ApiOperation("删除图片") @PreAuthorize("hasAnyRole('ADMIN','PICTURE_ALL','PICTURE_DELETE')") @DeleteMapping(value = "/{id}") public ResponseEntity delete(@PathVariable Long id) { @@ -63,7 +63,7 @@ public class PictureController { } @Log("多选删除图片") - @ApiOperation(value = "多选删除图片") + @ApiOperation("多选删除图片") @PreAuthorize("hasAnyRole('ADMIN','PICTURE_ALL','PICTURE_DELETE')") @DeleteMapping public ResponseEntity deleteAll(@RequestBody Long[] ids) { diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java index 371c0506..2d8b2277 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java @@ -24,8 +24,8 @@ import java.util.Map; */ @Slf4j @RestController -@RequestMapping("api") -@Api(tags = "七牛云存储管理") +@RequestMapping("/api/qiNiuContent") +@Api(tags = "工具:七牛云存储管理") public class QiniuController { private final QiNiuService qiNiuService; @@ -34,14 +34,14 @@ public class QiniuController { this.qiNiuService = qiNiuService; } - @GetMapping(value = "/qiNiuConfig") + @GetMapping(value = "/config") public ResponseEntity get(){ return new ResponseEntity<>(qiNiuService.find(), HttpStatus.OK); } @Log("配置七牛云存储") - @ApiOperation(value = "配置七牛云存储") - @PutMapping(value = "/qiNiuConfig") + @ApiOperation("配置七牛云存储") + @PutMapping(value = "/config") public ResponseEntity emailConfig(@Validated @RequestBody QiniuConfig qiniuConfig){ qiNiuService.update(qiniuConfig); qiNiuService.update(qiniuConfig.getType()); @@ -49,15 +49,15 @@ public class QiniuController { } @Log("查询文件") - @ApiOperation(value = "查询文件") - @GetMapping(value = "/qiNiuContent") + @ApiOperation("查询文件") + @GetMapping public ResponseEntity getRoles(QiniuQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(qiNiuService.queryAll(criteria,pageable),HttpStatus.OK); } @Log("上传文件") - @ApiOperation(value = "上传文件") - @PostMapping(value = "/qiNiuContent") + @ApiOperation("上传文件") + @PostMapping public ResponseEntity upload(@RequestParam MultipartFile file){ QiniuContent qiniuContent = qiNiuService.upload(file,qiNiuService.find()); Map map = new HashMap<>(3); @@ -68,16 +68,16 @@ public class QiniuController { } @Log("同步七牛云数据") - @ApiOperation(value = "同步七牛云数据") - @PostMapping(value = "/qiNiuContent/synchronize") + @ApiOperation("同步七牛云数据") + @PostMapping(value = "/synchronize") public ResponseEntity synchronize(){ qiNiuService.synchronize(qiNiuService.find()); return new ResponseEntity(HttpStatus.OK); } @Log("下载文件") - @ApiOperation(value = "下载文件") - @GetMapping(value = "/qiNiuContent/download/{id}") + @ApiOperation("下载文件") + @GetMapping(value = "/download/{id}") public ResponseEntity download(@PathVariable Long id){ Map map = new HashMap<>(1); map.put("url", qiNiuService.download(qiNiuService.findByContentId(id),qiNiuService.find())); @@ -85,16 +85,16 @@ public class QiniuController { } @Log("删除文件") - @ApiOperation(value = "删除文件") - @DeleteMapping(value = "/qiNiuContent/{id}") + @ApiOperation("删除文件") + @DeleteMapping(value = "/{id}") public ResponseEntity delete(@PathVariable Long id){ qiNiuService.delete(qiNiuService.findByContentId(id),qiNiuService.find()); return new ResponseEntity(HttpStatus.OK); } @Log("删除多张图片") - @ApiOperation(value = "删除多张图片") - @DeleteMapping(value = "/qiNiuContent") + @ApiOperation("删除多张图片") + @DeleteMapping public ResponseEntity deleteAll(@RequestBody Long[] ids) { qiNiuService.deleteAll(ids, qiNiuService.find()); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/VerificationCodeController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/VerificationCodeController.java index 718b2579..bffa0948 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/VerificationCodeController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/VerificationCodeController.java @@ -7,10 +7,8 @@ import me.zhengjie.domain.vo.EmailVo; import me.zhengjie.service.EmailService; import me.zhengjie.service.VerificationCodeService; import me.zhengjie.utils.ElAdminConstant; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.web.bind.annotation.*; /** @@ -18,21 +16,21 @@ import org.springframework.web.bind.annotation.*; * @date 2018-12-26 */ @RestController -@RequestMapping("api") -@Api(tags = "验证码管理") +@RequestMapping("/api/code") +@Api(tags = "工具:验证码管理") public class VerificationCodeController { private final VerificationCodeService verificationCodeService; private final EmailService emailService; - public VerificationCodeController(VerificationCodeService verificationCodeService, @Qualifier("jwtUserDetailsService") UserDetailsService userDetailsService, EmailService emailService) { + public VerificationCodeController(VerificationCodeService verificationCodeService, EmailService emailService) { this.verificationCodeService = verificationCodeService; this.emailService = emailService; } - @PostMapping(value = "/code/resetEmail") - @ApiOperation(value = "重置邮箱,发送验证码") + @PostMapping(value = "/resetEmail") + @ApiOperation("重置邮箱,发送验证码") public ResponseEntity resetEmail(@RequestBody VerificationCode code) throws Exception { code.setScenes(ElAdminConstant.RESET_MAIL); EmailVo emailVo = verificationCodeService.sendEmail(code); @@ -40,8 +38,8 @@ public class VerificationCodeController { return new ResponseEntity(HttpStatus.OK); } - @PostMapping(value = "/code/email/resetPass") - @ApiOperation(value = "重置密码,发送验证码") + @PostMapping(value = "/email/resetPass") + @ApiOperation("重置密码,发送验证码") public ResponseEntity resetPass(@RequestParam String email) throws Exception { VerificationCode code = new VerificationCode(); code.setType("email"); @@ -52,8 +50,8 @@ public class VerificationCodeController { return new ResponseEntity(HttpStatus.OK); } - @GetMapping(value = "/code/validated") - @ApiOperation(value = "验证码验证") + @GetMapping(value = "/validated") + @ApiOperation("验证码验证") public ResponseEntity validated(VerificationCode code){ verificationCodeService.validated(code); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/AlipayService.java b/eladmin-tools/src/main/java/me/zhengjie/service/AlipayService.java index 69629d38..9cebe56d 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/AlipayService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/AlipayService.java @@ -10,7 +10,6 @@ import org.springframework.cache.annotation.Cacheable; * @author Zheng Jie * @date 2018-12-31 */ -@CacheConfig(cacheNames = "alipay") public interface AlipayService { /** @@ -35,7 +34,6 @@ public interface AlipayService { * 查询配置 * @return AlipayConfig */ - @Cacheable(key = "'1'") AlipayConfig find(); /** @@ -43,6 +41,5 @@ public interface AlipayService { * @param alipayConfig 支付宝配置 * @return AlipayConfig */ - @CachePut(key = "'1'") AlipayConfig update(AlipayConfig alipayConfig); } diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/EmailService.java b/eladmin-tools/src/main/java/me/zhengjie/service/EmailService.java index ed0d9432..bd716d26 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/EmailService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/EmailService.java @@ -2,16 +2,12 @@ package me.zhengjie.service; import me.zhengjie.domain.EmailConfig; import me.zhengjie.domain.vo.EmailVo; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CachePut; -import org.springframework.cache.annotation.Cacheable; import org.springframework.scheduling.annotation.Async; /** * @author Zheng Jie * @date 2018-12-26 */ -@CacheConfig(cacheNames = "email") public interface EmailService { /** @@ -20,14 +16,12 @@ public interface EmailService { * @param old 旧的配置 * @return EmailConfig */ - @CachePut(key = "'1'") EmailConfig update(EmailConfig emailConfig, EmailConfig old); /** * 查询配置 * @return EmailConfig 邮件配置 */ - @Cacheable(key = "'1'") EmailConfig find(); /** diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java b/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java index 504997e5..93f063c2 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java @@ -3,9 +3,6 @@ package me.zhengjie.service; import me.zhengjie.domain.LocalStorage; import me.zhengjie.service.dto.LocalStorageDTO; import me.zhengjie.service.dto.LocalStorageQueryCriteria; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; import org.springframework.web.multipart.MultipartFile; @@ -13,61 +10,19 @@ import org.springframework.web.multipart.MultipartFile; * @author Zheng Jie * @date 2019-09-05 */ -@CacheConfig(cacheNames = "localStorage") public interface LocalStorageService { - /** - * queryAll 分页 - * @param criteria 条件参数 - * @param pageable 分页参数 - * @return Object - */ - @Cacheable Object queryAll(LocalStorageQueryCriteria criteria, Pageable pageable); - /** - * queryAll 不分页 - * @param criteria 条件参数 - * @return Object - */ - @Cacheable Object queryAll(LocalStorageQueryCriteria criteria); - /** - * findById - * @param id - * @return LocalStorageDTO - */ - @Cacheable(key = "#p0") LocalStorageDTO findById(Long id); - /** - * create - * @param name 文件名称 - * @param file 文件资源 - * @return LocalStorageDTO - */ - @CacheEvict(allEntries = true) LocalStorageDTO create(String name, MultipartFile file); - /** - * update - * @param resources 资源实体 - */ - @CacheEvict(allEntries = true) void update(LocalStorage resources); - /** - * delete - * @param id 文件ID - */ - @CacheEvict(allEntries = true) void delete(Long id); - /** - * 多文件删除 - * @param ids 文件数组 - */ - @CacheEvict(allEntries = true) void deleteAll(Long[] ids); } \ No newline at end of file diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/PictureService.java b/eladmin-tools/src/main/java/me/zhengjie/service/PictureService.java index eb8a0e5f..00052ffd 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/PictureService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/PictureService.java @@ -2,55 +2,22 @@ package me.zhengjie.service; import me.zhengjie.domain.Picture; import me.zhengjie.service.dto.PictureQueryCriteria; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; import org.springframework.web.multipart.MultipartFile; + /** * @author Zheng Jie * @date 2018-12-27 */ -@CacheConfig(cacheNames = "picture") public interface PictureService { - /** - * 查询图片 - * @param criteria 条件参数 - * @param pageable 分页参数 - * @return Object - */ - @Cacheable Object queryAll(PictureQueryCriteria criteria, Pageable pageable); - /** - * 上传图片 - * @param file 文件 - * @param username 用户名 - * @return - */ - @CacheEvict(allEntries = true) Picture upload(MultipartFile file, String username); - /** - * 根据ID查询 - * @param id 文件ID - * @return - */ - @Cacheable(key = "#p0") Picture findById(Long id); - /** - * 删除图片 - * @param picture 图片实体 - */ - @CacheEvict(allEntries = true) void delete(Picture picture); - /** - * 删除图片 - * @param ids 文件ID数组 - */ - @CacheEvict(allEntries = true) void deleteAll(Long[] ids); } diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java b/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java index 16e37ad0..717d511e 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java @@ -3,66 +3,49 @@ package me.zhengjie.service; import me.zhengjie.domain.QiniuConfig; import me.zhengjie.domain.QiniuContent; import me.zhengjie.service.dto.QiniuQueryCriteria; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.CachePut; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; -import org.springframework.scheduling.annotation.Async; import org.springframework.web.multipart.MultipartFile; /** * @author Zheng Jie * @date 2018-12-31 */ -@CacheConfig(cacheNames = "qiNiu") public interface QiNiuService { - /** - * 查询文件 - * @param criteria 条件参数 - * @param pageable 分页参数 - * @return Object - */ - @Cacheable Object queryAll(QiniuQueryCriteria criteria, Pageable pageable); /** * 查配置 * @return Cacheable */ - @Cacheable(cacheNames = "qiNiuConfig", key = "'1'") QiniuConfig find(); /** * 修改配置 - * @param qiniuConfig + * @param qiniuConfig 配置 * @return QiniuConfig */ - @CachePut(cacheNames = "qiNiuConfig", key = "'1'") QiniuConfig update(QiniuConfig qiniuConfig); /** * 上传文件 - * @param file - * @param qiniuConfig + * @param file 文件 + * @param qiniuConfig 配置 * @return QiniuContent */ - @CacheEvict(allEntries = true) QiniuContent upload(MultipartFile file, QiniuConfig qiniuConfig); /** * 查询文件 - * @param id + * @param id 文件ID * @return QiniuContent */ - @Cacheable(key = "'content:'+#p0") QiniuContent findByContentId(Long id); /** * 下载文件 - * @param content - * @param config + * @param content 文件信息 + * @param config 配置 * @return String */ String download(QiniuContent content, QiniuConfig config); @@ -72,14 +55,12 @@ public interface QiNiuService { * @param content 文件 * @param config 配置 */ - @CacheEvict(allEntries = true) void delete(QiniuContent content, QiniuConfig config); /** * 同步数据 * @param config 配置 */ - @CacheEvict(allEntries = true) void synchronize(QiniuConfig config); /** @@ -87,13 +68,11 @@ public interface QiNiuService { * @param ids 文件ID数组 * @param config 配置 */ - @CacheEvict(allEntries = true) void deleteAll(Long[] ids, QiniuConfig config); /** * 更新数据 * @param type 类型 */ - @CacheEvict(allEntries = true) void update(String type); } diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/AlipayServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/AlipayServiceImpl.java index 611b9a05..cfef7a2a 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/AlipayServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/AlipayServiceImpl.java @@ -9,8 +9,9 @@ import me.zhengjie.domain.vo.TradeVo; import me.zhengjie.exception.BadRequestException; import me.zhengjie.repository.AlipayRepository; import me.zhengjie.service.AlipayService; -import me.zhengjie.utils.AlipayUtils; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -21,14 +22,15 @@ import java.util.Optional; * @date 2018-12-31 */ @Service +@CacheConfig(cacheNames = "alipay") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class AlipayServiceImpl implements AlipayService { - @Autowired - AlipayUtils alipayUtils; + private final AlipayRepository alipayRepository; - @Autowired - private AlipayRepository alipayRepository; + public AlipayServiceImpl(AlipayRepository alipayRepository) { + this.alipayRepository = alipayRepository; + } @Override public String toPayAsPC(AlipayConfig alipay, TradeVo trade) throws Exception { @@ -38,7 +40,7 @@ public class AlipayServiceImpl implements AlipayService { } AlipayClient alipayClient = new DefaultAlipayClient(alipay.getGatewayUrl(), alipay.getAppID(), alipay.getPrivateKey(), alipay.getFormat(), alipay.getCharset(), alipay.getPublicKey(), alipay.getSignType()); - double money = Double.parseDouble(trade.getTotalAmount()); +// double money = Double.parseDouble(trade.getTotalAmount()); // 创建API对应的request(电脑网页版) AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); @@ -91,12 +93,14 @@ public class AlipayServiceImpl implements AlipayService { } @Override + @Cacheable(key = "'1'") public AlipayConfig find() { Optional alipayConfig = alipayRepository.findById(1L); return alipayConfig.orElseGet(AlipayConfig::new); } @Override + @CachePut(key = "'1'") @Transactional(rollbackFor = Exception.class) public AlipayConfig update(AlipayConfig alipayConfig) { return alipayRepository.save(alipayConfig); diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java index 56ac2ac2..fee562de 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java @@ -8,6 +8,9 @@ import me.zhengjie.exception.BadRequestException; import me.zhengjie.repository.EmailRepository; import me.zhengjie.service.EmailService; import me.zhengjie.utils.EncryptUtils; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -18,6 +21,7 @@ import java.util.Optional; * @date 2018-12-26 */ @Service +@CacheConfig(cacheNames = "email") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class EmailServiceImpl implements EmailService { @@ -28,6 +32,7 @@ public class EmailServiceImpl implements EmailService { } @Override + @CachePut(key = "'1'") @Transactional(rollbackFor = Exception.class) public EmailConfig update(EmailConfig emailConfig, EmailConfig old) { try { @@ -42,6 +47,7 @@ public class EmailServiceImpl implements EmailService { } @Override + @Cacheable(key = "'1'") public EmailConfig find() { Optional emailConfig = emailRepository.findById(1L); return emailConfig.orElseGet(EmailConfig::new); diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java index e3119df8..716bf3d8 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java @@ -1,6 +1,8 @@ package me.zhengjie.service.impl; +import cn.hutool.core.util.ObjectUtil; import me.zhengjie.domain.LocalStorage; +import me.zhengjie.exception.BadRequestException; import me.zhengjie.utils.*; import me.zhengjie.repository.LocalStorageRepository; import me.zhengjie.service.LocalStorageService; @@ -8,11 +10,13 @@ import me.zhengjie.service.dto.LocalStorageDTO; import me.zhengjie.service.dto.LocalStorageQueryCriteria; import me.zhengjie.service.mapper.LocalStorageMapper; import org.springframework.beans.factory.annotation.Value; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.io.File; -import java.util.Optional; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.web.multipart.MultipartFile; @@ -22,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile; * @date 2019-09-05 */ @Service +@CacheConfig(cacheNames = "localStorage") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class LocalStorageServiceImpl implements LocalStorageService { @@ -41,24 +46,28 @@ public class LocalStorageServiceImpl implements LocalStorageService { } @Override + @Cacheable public Object queryAll(LocalStorageQueryCriteria criteria, Pageable pageable){ Page page = localStorageRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); return PageUtil.toPage(page.map(localStorageMapper::toDto)); } @Override + @Cacheable public Object queryAll(LocalStorageQueryCriteria criteria){ return localStorageMapper.toDto(localStorageRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); } @Override - public LocalStorageDTO findById(Long id) { - Optional localStorage = localStorageRepository.findById(id); - ValidationUtil.isNull(localStorage,"LocalStorage","id",id); - return localStorageMapper.toDto(localStorage.get()); + @Cacheable(key = "#p0") + public LocalStorageDTO findById(Long id){ + LocalStorage localStorage = localStorageRepository.findById(id).orElseGet(LocalStorage::new); + ValidationUtil.isNull(localStorage.getId(),"LocalStorage","id",id); + return localStorageMapper.toDto(localStorage); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public LocalStorageDTO create(String name, MultipartFile multipartFile) { FileUtil.checkSize(maxSize, multipartFile.getSize()); @@ -67,6 +76,9 @@ public class LocalStorageServiceImpl implements LocalStorageService { // String type = FileUtil.getFileTypeByMimeType(suffix); String type = FileUtil.getFileType(suffix); File file = FileUtil.upload(multipartFile, path + type + File.separator); + if(ObjectUtil.isNull(file)){ + throw new BadRequestException("上传失败"); + } try { name = StringUtils.isBlank(name) ? FileUtil.getFileNameNoEx(multipartFile.getOriginalFilename()) : name; LocalStorage localStorage = new LocalStorage( @@ -86,28 +98,30 @@ public class LocalStorageServiceImpl implements LocalStorageService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(LocalStorage resources) { - Optional optionalLocalStorage = localStorageRepository.findById(resources.getId()); - ValidationUtil.isNull( optionalLocalStorage,"LocalStorage","id",resources.getId()); - LocalStorage localStorage = optionalLocalStorage.get(); + LocalStorage localStorage = localStorageRepository.findById(resources.getId()).orElseGet(LocalStorage::new); + ValidationUtil.isNull( localStorage.getId(),"LocalStorage","id",resources.getId()); localStorage.copy(resources); localStorageRepository.save(localStorage); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Long id) { - LocalStorage storage = localStorageRepository.findById(id).get(); + LocalStorage storage = localStorageRepository.findById(id).orElseGet(LocalStorage::new); FileUtil.del(storage.getPath()); localStorageRepository.delete(storage); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void deleteAll(Long[] ids) { for (Long id : ids) { - LocalStorage storage = localStorageRepository.findById(id).get(); + LocalStorage storage = localStorageRepository.findById(id).orElseGet(LocalStorage::new); FileUtil.del(storage.getPath()); localStorageRepository.delete(storage); } diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java index 185ff147..f6b56c30 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java @@ -11,7 +11,9 @@ import me.zhengjie.repository.PictureRepository; import me.zhengjie.service.PictureService; import me.zhengjie.service.dto.PictureQueryCriteria; import me.zhengjie.utils.*; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -19,7 +21,6 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.util.HashMap; -import java.util.Optional; /** * @author Zheng Jie @@ -27,6 +28,7 @@ import java.util.Optional; */ @Slf4j @Service(value = "pictureService") +@CacheConfig(cacheNames = "picture") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class PictureServiceImpl implements PictureService { @@ -43,28 +45,32 @@ public class PictureServiceImpl implements PictureService { } @Override + @Cacheable public Object queryAll(PictureQueryCriteria criteria, Pageable pageable){ return PageUtil.toPage(pictureRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable)); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Throwable.class) public Picture upload(MultipartFile multipartFile, String username) { File file = FileUtil.toFile(multipartFile); + // 验证是否重复上传 + Picture picture = pictureRepository.findByMd5Code(FileUtil.getMD5(file)); + if(picture != null){ + return picture; + } HashMap paramMap = new HashMap<>(1); - paramMap.put("smfile", file); String result= HttpUtil.post(ElAdminConstant.Url.SM_MS_URL, paramMap); - JSONObject jsonObject = JSONUtil.parseObj(result); - Picture picture = null; if(!jsonObject.get(CODE).toString().equals(SUCCESS)){ throw new BadRequestException(TranslatorUtil.translate(jsonObject.get(MSG).toString())); } - //转成实体类 picture = JSON.parseObject(jsonObject.get("data").toString(), Picture.class); picture.setSize(FileUtil.getSize(Integer.parseInt(picture.getSize()))); picture.setUsername(username); + picture.setMd5Code(FileUtil.getMD5(file)); picture.setFilename(FileUtil.getFileNameNoEx(multipartFile.getOriginalFilename())+"."+FileUtil.getExtensionName(multipartFile.getOriginalFilename())); pictureRepository.save(picture); //删除临时文件 @@ -74,17 +80,19 @@ public class PictureServiceImpl implements PictureService { } @Override + @Cacheable(key = "#p0") public Picture findById(Long id) { - Optional picture = pictureRepository.findById(id); - ValidationUtil.isNull(picture,"Picture","id",id); - return picture.get(); + Picture picture = pictureRepository.findById(id).orElseGet(Picture::new); + ValidationUtil.isNull(picture.getId(),"Picture","id",id); + return picture; } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Picture picture) { try { - String result= HttpUtil.get(picture.getDelete()); + HttpUtil.get(picture.getDelete()); pictureRepository.delete(picture); } catch(Exception e){ pictureRepository.delete(picture); @@ -93,6 +101,7 @@ public class PictureServiceImpl implements PictureService { } @Override + @CacheEvict(allEntries = true) public void deleteAll(Long[] ids) { for (Long id : ids) { delete(findById(id)); diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java index 505dfc37..8731a8f8 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java @@ -21,15 +21,16 @@ import me.zhengjie.utils.PageUtil; import me.zhengjie.utils.QiNiuUtil; import me.zhengjie.utils.QueryHelp; import me.zhengjie.utils.ValidationUtil; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; 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.util.Map; import java.util.Optional; /** @@ -37,6 +38,7 @@ import java.util.Optional; * @date 2018-12-31 */ @Service +@CacheConfig(cacheNames = "qiNiu") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class QiNiuServiceImpl implements QiNiuService { @@ -53,17 +55,20 @@ public class QiNiuServiceImpl implements QiNiuService { private Long maxSize; @Override + @Cacheable public Object queryAll(QiniuQueryCriteria criteria, Pageable pageable){ return PageUtil.toPage(qiniuContentRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable)); } @Override + @Cacheable(key = "'1'") public QiniuConfig find() { Optional qiniuConfig = qiNiuConfigRepository.findById(1L); return qiniuConfig.orElseGet(QiniuConfig::new); } @Override + @CachePut(cacheNames = "qiNiuConfig", key = "'1'") @Transactional(rollbackFor = Exception.class) public QiniuConfig update(QiniuConfig qiniuConfig) { if (!(qiniuConfig.getHost().toLowerCase().startsWith("http://")||qiniuConfig.getHost().toLowerCase().startsWith("https://"))) { @@ -74,6 +79,7 @@ public class QiNiuServiceImpl implements QiNiuService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public QiniuContent upload(MultipartFile file, QiniuConfig qiniuConfig) { FileUtil.checkSize(maxSize, file.getSize()); @@ -109,15 +115,17 @@ public class QiNiuServiceImpl implements QiNiuService { } @Override + @Cacheable public QiniuContent findByContentId(Long id) { - Optional qiniuContent = qiniuContentRepository.findById(id); - ValidationUtil.isNull(qiniuContent,"QiniuContent", "id",id); - return qiniuContent.get(); + QiniuContent qiniuContent = qiniuContentRepository.findById(id).orElseGet(QiniuContent::new); + ValidationUtil.isNull(qiniuContent.getId(),"QiniuContent", "id",id); + return qiniuContent; } @Override + @Cacheable public String download(QiniuContent content,QiniuConfig config){ - String finalUrl = null; + String finalUrl; String TYPE = "公开"; if(TYPE.equals(content.getType())){ finalUrl = content.getUrl(); @@ -131,6 +139,7 @@ public class QiNiuServiceImpl implements QiNiuService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(QiniuContent content, QiniuConfig config) { //构造一个带指定Zone对象的配置类 @@ -146,6 +155,7 @@ public class QiNiuServiceImpl implements QiNiuService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void synchronize(QiniuConfig config) { if(config.getId() == null){ @@ -165,7 +175,7 @@ public class QiNiuServiceImpl implements QiNiuService { BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(config.getBucket(), prefix, limit, delimiter); while (fileListIterator.hasNext()) { //处理获取的file list结果 - QiniuContent qiniuContent = null; + QiniuContent qiniuContent; FileInfo[] items = fileListIterator.next(); for (FileInfo item : items) { if(qiniuContentRepository.findByKey(FileUtil.getFileNameNoEx(item.key)) == null){ @@ -183,6 +193,7 @@ public class QiNiuServiceImpl implements QiNiuService { } @Override + @CacheEvict(allEntries = true) public void deleteAll(Long[] ids, QiniuConfig config) { for (Long id : ids) { delete(findByContentId(id), config); @@ -190,6 +201,7 @@ public class QiNiuServiceImpl implements QiNiuService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(String type) { qiNiuConfigRepository.update(type); diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/VerificationCodeServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/VerificationCodeServiceImpl.java index 0dda045c..1b69d4d3 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/VerificationCodeServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/VerificationCodeServiceImpl.java @@ -11,12 +11,10 @@ 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.Collections; import java.util.concurrent.*; @@ -28,17 +26,20 @@ import java.util.concurrent.*; @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class VerificationCodeServiceImpl implements VerificationCodeService { - @Autowired - private VerificationCodeRepository verificationCodeRepository; + private final VerificationCodeRepository verificationCodeRepository; @Value("${code.expiration}") private Integer expiration; + public VerificationCodeServiceImpl(VerificationCodeRepository verificationCodeRepository) { + this.verificationCodeRepository = verificationCodeRepository; + } + @Override @Transactional(rollbackFor = Exception.class) public EmailVo sendEmail(VerificationCode code) { - EmailVo emailVo = null; - String content = ""; + EmailVo emailVo; + String content; VerificationCode verificationCode = verificationCodeRepository.findByScenesAndTypeAndValueAndStatusIsTrue(code.getScenes(),code.getType(),code.getValue()); // 如果不存在有效的验证码,就创建一个新的 TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); diff --git a/eladmin-tools/src/main/java/me/zhengjie/utils/AliPayStatusEnum.java b/eladmin-tools/src/main/java/me/zhengjie/utils/AliPayStatusEnum.java index 39713cd5..9bda06e8 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/utils/AliPayStatusEnum.java +++ b/eladmin-tools/src/main/java/me/zhengjie/utils/AliPayStatusEnum.java @@ -7,24 +7,12 @@ package me.zhengjie.utils; */ public enum AliPayStatusEnum { - /** - * 交易成功 - */ FINISHED("交易成功", "TRADE_FINISHED"), - /** - * 支付成功 - */ SUCCESS("支付成功", "TRADE_SUCCESS"), - /** - * 交易创建 - */ BUYER_PAY("交易创建", "WAIT_BUYER_PAY"), - /** - * 交易关闭 - */ CLOSED("交易关闭", "TRADE_CLOSED"); private String value; diff --git a/eladmin-tools/src/main/java/me/zhengjie/utils/AlipayUtils.java b/eladmin-tools/src/main/java/me/zhengjie/utils/AlipayUtils.java index 5b7d6dbd..bf38d29b 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/utils/AlipayUtils.java +++ b/eladmin-tools/src/main/java/me/zhengjie/utils/AlipayUtils.java @@ -1,6 +1,5 @@ package me.zhengjie.utils; -import cn.hutool.core.util.StrUtil; import com.alipay.api.AlipayApiException; import com.alipay.api.internal.util.AlipaySignature; import me.zhengjie.domain.AlipayConfig; @@ -9,7 +8,6 @@ import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; -import java.util.Iterator; import java.util.Map; /** @@ -22,6 +20,7 @@ public class AlipayUtils { /** * 生成订单号 + * @return String */ public String getOrderCode() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -39,6 +38,9 @@ public class AlipayUtils { /** * 校验签名 + * @param request HttpServletRequest + * @param alipay 阿里云配置 + * @return boolean */ public boolean rsaCheck(HttpServletRequest request, AlipayConfig alipay){ @@ -65,8 +67,4 @@ public class AlipayUtils { return false; } } - - public boolean isEmpty(String str){ - return StrUtil.isEmpty(str); - } } diff --git a/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java b/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java index 8ae059b8..3759e4a5 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java +++ b/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java @@ -21,6 +21,8 @@ public class QiNiuUtil { /** * 得到机房的对应关系 + * @param zone 机房名称 + * @return Region */ public static Region getRegion(String zone){ @@ -40,6 +42,8 @@ public class QiNiuUtil { /** * 默认不指定key的情况下,以文件内容的hash值作为文件名 + * @param file 文件名 + * @return String */ public static String getKey(String file){ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); From 8cb7dc886f1b56bb331d9a5225f0c66e90655f3e Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Thu, 24 Oct 2019 21:06:35 +0800 Subject: [PATCH 04/25] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E5=AE=9E=E4=BD=93?= =?UTF-8?q?=E5=9F=BA=E7=B1=BB=E3=80=81DTO=E5=9F=BA=E7=B1=BB=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86=E5=AE=9E=E4=BD=93=E7=BB=A7?= =?UTF-8?q?=E6=89=BF=E5=9F=BA=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/zhengjie/aspect/LimitAspect.java | 2 +- .../java/me/zhengjie/aspect/LimitType.java | 7 ++- .../main/java/me/zhengjie/base/BaseDTO.java | 21 ++++++++ .../java/me/zhengjie/base/BaseEntity.java | 52 +++++++++++++++++++ .../BaseMapper.java} | 4 +- .../main/java/me/zhengjie/utils/FileUtil.java | 17 +++--- .../java/me/zhengjie/utils/QueryHelp.java | 2 + .../java/me/zhengjie/utils/StringUtils.java | 2 +- .../me/zhengjie/utils/StringUtilsTest.java | 2 +- .../java/me/zhengjie/aspect/LogAspect.java | 4 +- .../service/mapper/LogErrorMapper.java | 4 +- .../service/mapper/LogSmallMapper.java | 4 +- .../modules/quartz/domain/QuartzJob.java | 14 +---- .../zhengjie/modules/system/domain/Dept.java | 17 +++--- .../zhengjie/modules/system/domain/Dict.java | 11 ++-- .../modules/system/domain/DictDetail.java | 11 ++-- .../zhengjie/modules/system/domain/Job.java | 14 +++-- .../zhengjie/modules/system/domain/Menu.java | 9 +--- .../modules/system/domain/Permission.java | 20 +------ .../zhengjie/modules/system/domain/Role.java | 17 +----- .../zhengjie/modules/system/domain/User.java | 25 +-------- .../modules/system/domain/UserAvatar.java | 10 ++-- .../modules/system/service/dto/DeptDTO.java | 14 +++-- .../modules/system/service/dto/DictDTO.java | 10 ++-- .../system/service/dto/DictDetailDTO.java | 10 ++-- .../modules/system/service/dto/JobDTO.java | 12 ++--- .../modules/system/service/dto/MenuDTO.java | 14 +++-- .../system/service/dto/PermissionDTO.java | 25 +++------ .../modules/system/service/dto/RoleDTO.java | 13 +++-- .../modules/system/service/dto/UserDTO.java | 13 +++-- .../system/service/mapper/DeptMapper.java | 4 +- .../service/mapper/DeptSmallMapper.java | 4 +- .../service/mapper/DictDetailMapper.java | 4 +- .../system/service/mapper/DictMapper.java | 4 +- .../system/service/mapper/JobMapper.java | 4 +- .../system/service/mapper/JobSmallMapper.java | 4 +- .../system/service/mapper/MenuMapper.java | 4 +- .../service/mapper/PermissionMapper.java | 4 +- .../system/service/mapper/RoleMapper.java | 4 +- .../service/mapper/RoleSmallMapper.java | 5 +- .../system/service/mapper/UserMapper.java | 6 +-- .../template/generator/admin/Mapper.ftl | 4 +- .../java/me/zhengjie/domain/LocalStorage.java | 27 ++-------- .../zhengjie/service/dto/LocalStorageDTO.java | 19 +++---- .../service/impl/PictureServiceImpl.java | 5 +- .../service/mapper/LocalStorageMapper.java | 4 +- 46 files changed, 230 insertions(+), 256 deletions(-) create mode 100644 eladmin-common/src/main/java/me/zhengjie/base/BaseDTO.java create mode 100644 eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java rename eladmin-common/src/main/java/me/zhengjie/{mapper/EntityMapper.java => base/BaseMapper.java} (85%) diff --git a/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java index e4d6fb0d..17e2c469 100644 --- a/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java +++ b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java @@ -44,7 +44,7 @@ public class LimitAspect { String key = limit.key(); if (StringUtils.isEmpty(key)) { if (limitType == LimitType.IP) { - key = StringUtils.getIP(request); + key = StringUtils.getIp(request); } else { key = signatureMethod.getName(); } diff --git a/eladmin-common/src/main/java/me/zhengjie/aspect/LimitType.java b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitType.java index 6f383047..1c304eea 100644 --- a/eladmin-common/src/main/java/me/zhengjie/aspect/LimitType.java +++ b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitType.java @@ -1,7 +1,12 @@ package me.zhengjie.aspect; +/** + * 限流枚举 + * @author / + */ public enum LimitType { + // 默认 CUSTOMER, -// by ip addr + // by ip addr IP; } diff --git a/eladmin-common/src/main/java/me/zhengjie/base/BaseDTO.java b/eladmin-common/src/main/java/me/zhengjie/base/BaseDTO.java new file mode 100644 index 00000000..903904df --- /dev/null +++ b/eladmin-common/src/main/java/me/zhengjie/base/BaseDTO.java @@ -0,0 +1,21 @@ +package me.zhengjie.base; + +import lombok.Getter; +import lombok.Setter; +import java.io.Serializable; +import java.sql.Timestamp; + +/** + * @author Zheng Jie + * @Date 2019年10月24日20:48:53 + */ +@Getter +@Setter +public class BaseDTO implements Serializable { + + private Boolean isDelete; + + private Timestamp createTime; + + private Timestamp updateTime; +} diff --git a/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java b/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java new file mode 100644 index 00000000..a1fdda06 --- /dev/null +++ b/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java @@ -0,0 +1,52 @@ +package me.zhengjie.base; + +import lombok.*; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.UpdateTimestamp; +import javax.persistence.Column; +import javax.persistence.MappedSuperclass; +import java.io.Serializable; +import java.sql.Timestamp; +import java.lang.reflect.Field; + +/** + * @author Zheng Jie + * @Date 2019年10月24日20:46:32 + */ +@Getter +@Setter +@MappedSuperclass +public class BaseEntity implements Serializable { + + // 删除标识 + @Column(name = "is_delete", columnDefinition = "bit default 0") + private Boolean isDelete = false; + + @Column(name = "create_time") + @CreationTimestamp + private Timestamp createTime; + + @Column(name = "update_time") + @UpdateTimestamp + private Timestamp updateTime; + + public @interface New {} + + public @interface Update {} + + @Override + public String toString() { + ToStringBuilder builder = new ToStringBuilder(this); + Field[] fields = this.getClass().getDeclaredFields(); + try { + for (Field f : fields) { + f.setAccessible(true); + builder.append(f.getName(), f.get(this)).append("\n"); + } + } catch (Exception e) { + builder.append("toString builder encounter an error"); + } + return builder.toString(); + } +} diff --git a/eladmin-common/src/main/java/me/zhengjie/mapper/EntityMapper.java b/eladmin-common/src/main/java/me/zhengjie/base/BaseMapper.java similarity index 85% rename from eladmin-common/src/main/java/me/zhengjie/mapper/EntityMapper.java rename to eladmin-common/src/main/java/me/zhengjie/base/BaseMapper.java index be8696dd..82609e50 100644 --- a/eladmin-common/src/main/java/me/zhengjie/mapper/EntityMapper.java +++ b/eladmin-common/src/main/java/me/zhengjie/base/BaseMapper.java @@ -1,4 +1,4 @@ -package me.zhengjie.mapper; +package me.zhengjie.base; import java.util.List; @@ -6,7 +6,7 @@ import java.util.List; * @author Zheng Jie * @date 2018-11-23 */ -public interface EntityMapper { +public interface BaseMapper { /** * DTO转Entity diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java index ae526fda..151f0283 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java @@ -145,7 +145,8 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); } - file.transferTo(dest);// 文件写入 + // 文件写入 + file.transferTo(dest); return dest; } catch (Exception e) { e.printStackTrace(); @@ -197,7 +198,9 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { return "音乐"; } else if(video.contains(type)){ return "视频"; - } else return "其他"; + } else { + return "其他"; + } } public static String getFileTypeByMimeType(String type) { @@ -215,8 +218,8 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { * 判断两个文件是否相同 */ public static boolean check(File file1, File file2) { - String img1Md5 = getMD5(file1); - String img2Md5 = getMD5(file2); + String img1Md5 = getMd5(file1); + String img2Md5 = getMd5(file2); return img1Md5.equals(img2Md5); } @@ -244,7 +247,7 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { return b; } - private static String getMD5(byte[] bytes) { + private static String getMd5(byte[] bytes) { // 16进制字符 char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; try { @@ -266,8 +269,8 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { return null; } - public static String getMD5(File file) { - return getMD5(getByte(file)); + public static String getMd5(File file) { + return getMd5(getByte(file)); } } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java b/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java index fa668408..7c82dc1e 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java @@ -69,6 +69,7 @@ public class QueryHelp { join = root.join(name, JoinType.RIGHT); } break; + default: break; } } } @@ -105,6 +106,7 @@ public class QueryHelp { list.add(getExpression(attributeName,join,root).in((Collection) val)); } break; + default: break; } } field.setAccessible(accessible); diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java index e5f3c587..d440bcb9 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java @@ -107,7 +107,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { /** * 获取ip地址 */ - public static String getIP(HttpServletRequest request) { + 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"); diff --git a/eladmin-common/src/test/java/me/zhengjie/utils/StringUtilsTest.java b/eladmin-common/src/test/java/me/zhengjie/utils/StringUtilsTest.java index 6811b9cc..12e875a8 100644 --- a/eladmin-common/src/test/java/me/zhengjie/utils/StringUtilsTest.java +++ b/eladmin-common/src/test/java/me/zhengjie/utils/StringUtilsTest.java @@ -38,6 +38,6 @@ public class StringUtilsTest { @Test public void testGetIP() { - assertEquals("127.0.0.1", getIP(new MockHttpServletRequest())); + assertEquals("127.0.0.1", getIp(new MockHttpServletRequest())); } } \ No newline at end of file diff --git a/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java index ca2ad5b6..989a74c6 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java +++ b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java @@ -52,7 +52,7 @@ public class LogAspect { currentTime = System.currentTimeMillis(); result = joinPoint.proceed(); Log log = new Log("INFO",System.currentTimeMillis() - currentTime); - logService.save(getUsername(), StringUtils.getIP(RequestHolder.getHttpServletRequest()),joinPoint, log); + logService.save(getUsername(), StringUtils.getIp(RequestHolder.getHttpServletRequest()),joinPoint, log); return result; } @@ -66,7 +66,7 @@ public class LogAspect { public void logAfterThrowing(JoinPoint joinPoint, Throwable e) { Log log = new Log("ERROR",System.currentTimeMillis() - currentTime); log.setExceptionDetail(ThrowableUtil.getStackTrace(e).getBytes()); - logService.save(getUsername(), StringUtils.getIP(RequestHolder.getHttpServletRequest()), (ProceedingJoinPoint)joinPoint, log); + logService.save(getUsername(), StringUtils.getIp(RequestHolder.getHttpServletRequest()), (ProceedingJoinPoint)joinPoint, log); } public String getUsername() { diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogErrorMapper.java b/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogErrorMapper.java index f4ca6170..8e033ac1 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogErrorMapper.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogErrorMapper.java @@ -1,7 +1,7 @@ package me.zhengjie.service.mapper; +import me.zhengjie.base.BaseMapper; import me.zhengjie.domain.Log; -import me.zhengjie.mapper.EntityMapper; import me.zhengjie.service.dto.LogErrorDTO; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; @@ -11,6 +11,6 @@ import org.mapstruct.ReportingPolicy; * @date 2019-5-22 */ @Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface LogErrorMapper extends EntityMapper { +public interface LogErrorMapper extends BaseMapper { } \ No newline at end of file diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogSmallMapper.java b/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogSmallMapper.java index 4d5d200f..630be522 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogSmallMapper.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogSmallMapper.java @@ -1,7 +1,7 @@ package me.zhengjie.service.mapper; +import me.zhengjie.base.BaseMapper; import me.zhengjie.domain.Log; -import me.zhengjie.mapper.EntityMapper; import me.zhengjie.service.dto.LogSmallDTO; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; @@ -11,6 +11,6 @@ import org.mapstruct.ReportingPolicy; * @date 2019-5-22 */ @Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface LogSmallMapper extends EntityMapper { +public interface LogSmallMapper extends BaseMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java index faa62c2e..56216a1e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java @@ -1,13 +1,10 @@ package me.zhengjie.modules.quartz.domain; import lombok.Data; -import org.hibernate.annotations.UpdateTimestamp; - +import me.zhengjie.base.BaseEntity; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; -import java.io.Serializable; -import java.sql.Timestamp; /** * @author Zheng Jie @@ -16,7 +13,7 @@ import java.sql.Timestamp; @Data @Entity @Table(name = "quartz_job") -public class QuartzJob implements Serializable { +public class QuartzJob extends BaseEntity { public static final String JOB_KEY = "JOB_KEY"; @@ -56,11 +53,4 @@ public class QuartzJob implements Serializable { @Column(name = "remark") @NotBlank private String remark; - - // 创建日期 - @UpdateTimestamp - @Column(name = "update_time") - private Timestamp updateTime; - - public interface Update{} } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java index 36dd1863..1b392aa8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java @@ -2,12 +2,12 @@ package me.zhengjie.modules.system.domain; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; -import org.hibernate.annotations.CreationTimestamp; +import lombok.Getter; +import lombok.Setter; +import me.zhengjie.base.BaseEntity; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; -import java.sql.Timestamp; -import java.io.Serializable; import java.util.Set; /** @@ -15,9 +15,10 @@ import java.util.Set; * @date 2019-03-25 */ @Entity -@Data +@Getter +@Setter @Table(name="dept") -public class Dept implements Serializable { +public class Dept extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -39,10 +40,4 @@ public class Dept implements Serializable { @JsonIgnore @ManyToMany(mappedBy = "depts") private Set roles; - - @Column(name = "create_time") - @CreationTimestamp - private Timestamp createTime; - - public @interface Update {} } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java index 033681af..d9c6ca1d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java @@ -1,6 +1,10 @@ package me.zhengjie.modules.system.domain; import lombok.Data; +import lombok.Getter; +import lombok.Setter; +import me.zhengjie.base.BaseEntity; + import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -12,9 +16,10 @@ import java.util.List; * @date 2019-04-10 */ @Entity -@Data +@Getter +@Setter @Table(name="dict") -public class Dict implements Serializable { +public class Dict extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -31,6 +36,4 @@ public class Dict implements Serializable { @OneToMany(mappedBy = "dict",cascade={CascadeType.PERSIST,CascadeType.REMOVE}) private List dictDetails; - - public @interface Update {} } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java index d6c7b3be..48e52c00 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java @@ -1,6 +1,10 @@ package me.zhengjie.modules.system.domain; import lombok.Data; +import lombok.Getter; +import lombok.Setter; +import me.zhengjie.base.BaseEntity; + import javax.persistence.*; import javax.validation.constraints.NotNull; import java.io.Serializable; @@ -10,9 +14,10 @@ import java.io.Serializable; * @date 2019-04-10 */ @Entity -@Data +@Getter +@Setter @Table(name="dict_detail") -public class DictDetail implements Serializable { +public class DictDetail extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -36,6 +41,4 @@ public class DictDetail implements Serializable { @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name = "dict_id") private Dict dict; - - public @interface Update {} } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java index 940e1df6..e6f6b82c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java @@ -1,6 +1,9 @@ package me.zhengjie.modules.system.domain; import lombok.Data; +import lombok.Getter; +import lombok.Setter; +import me.zhengjie.base.BaseEntity; import org.hibernate.annotations.*; import javax.persistence.*; import javax.persistence.Entity; @@ -15,9 +18,10 @@ import java.io.Serializable; * @date 2019-03-29 */ @Entity -@Data +@Getter +@Setter @Table(name="job") -public class Job implements Serializable { +public class Job extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -40,10 +44,4 @@ public class Job implements Serializable { @OneToOne @JoinColumn(name = "dept_id") private Dept dept; - - @Column(name = "create_time") - @CreationTimestamp - private Timestamp createTime; - - public @interface Update {} } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java index addf5b16..20ab89ca 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java @@ -3,6 +3,7 @@ package me.zhengjie.modules.system.domain; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; import lombok.Setter; +import me.zhengjie.base.BaseEntity; import org.hibernate.annotations.CreationTimestamp; import javax.persistence.*; import javax.validation.constraints.NotBlank; @@ -20,7 +21,7 @@ import java.util.Set; @Getter @Setter @Table(name = "menu") -public class Menu implements Serializable { +public class Menu extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -63,12 +64,6 @@ public class Menu implements Serializable { @JsonIgnore private Set roles; - @CreationTimestamp - @Column(name = "create_time") - private Timestamp createTime; - - public interface Update{} - @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java index 1d97b55c..d0305a4d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java @@ -3,6 +3,7 @@ package me.zhengjie.modules.system.domain; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; import lombok.Setter; +import me.zhengjie.base.BaseEntity; import org.hibernate.annotations.CreationTimestamp; import javax.persistence.*; import javax.validation.constraints.NotBlank; @@ -19,7 +20,7 @@ import java.util.Set; @Getter @Setter @Table(name = "permission") -public class Permission implements Serializable{ +public class Permission extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -40,21 +41,4 @@ public class Permission implements Serializable{ @JsonIgnore @ManyToMany(mappedBy = "permissions") private Set roles; - - @CreationTimestamp - @Column(name = "create_time") - private Timestamp createTime; - - @Override - public String toString() { - return "Permission{" + - "id=" + id + - ", name='" + name + '\'' + - ", pid=" + pid + - ", alias='" + alias + '\'' + - ", createTime=" + createTime + - '}'; - } - - public interface Update{} } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java index c44c97fb..39e93114 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java @@ -3,6 +3,7 @@ package me.zhengjie.modules.system.domain; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; import lombok.Setter; +import me.zhengjie.base.BaseEntity; import org.hibernate.annotations.CreationTimestamp; import javax.persistence.*; import javax.validation.constraints.NotBlank; @@ -21,7 +22,7 @@ import java.util.Set; @Table(name = "role") @Getter @Setter -public class Role implements Serializable { +public class Role extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -59,20 +60,6 @@ public class Role implements Serializable { @JoinTable(name = "roles_depts", joinColumns = {@JoinColumn(name = "role_id",referencedColumnName = "id")}, inverseJoinColumns = {@JoinColumn(name = "dept_id",referencedColumnName = "id")}) private Set depts; - @CreationTimestamp - @Column(name = "create_time") - private Timestamp createTime; - - @Override - public String toString() { - return "Role{" + - "id=" + id + - ", name='" + name + '\'' + - ", remark='" + remark + '\'' + - ", createDateTime=" + createTime + - '}'; - } - @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java index 0bb62850..9eef82dd 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java @@ -2,13 +2,11 @@ package me.zhengjie.modules.system.domain; import lombok.Getter; import lombok.Setter; -import org.hibernate.annotations.CreationTimestamp; +import me.zhengjie.base.BaseEntity; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; -import java.io.Serializable; -import java.sql.Timestamp; import java.util.Date; import java.util.Set; @@ -20,7 +18,7 @@ import java.util.Set; @Getter @Setter @Table(name="user") -public class User implements Serializable { +public class User extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -47,10 +45,6 @@ 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; @@ -65,19 +59,4 @@ public class User implements Serializable { @OneToOne @JoinColumn(name = "dept_id") private Dept dept; - - @Override - public String toString() { - return "User{" + - "id=" + id + - ", username='" + username + '\'' + - ", email='" + email + '\'' + - ", enabled=" + enabled + - ", password='" + password + '\'' + - ", createTime=" + createTime + - ", lastPasswordResetTime=" + lastPasswordResetTime + - '}'; - } - - public @interface Update {} } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/UserAvatar.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/UserAvatar.java index bba30dc2..f7470d10 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/UserAvatar.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/UserAvatar.java @@ -2,7 +2,10 @@ package me.zhengjie.modules.system.domain; import cn.hutool.core.util.ObjectUtil; import lombok.Data; +import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.Setter; +import me.zhengjie.base.BaseEntity; import javax.persistence.*; import java.sql.Timestamp; @@ -12,10 +15,11 @@ import java.sql.Timestamp; * @date 2019年9月7日 16:16:59 */ @Entity -@Table(name = "user_avatar") -@Data +@Getter +@Setter @NoArgsConstructor -public class UserAvatar { +@Table(name = "user_avatar") +public class UserAvatar extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDTO.java index 23f151e1..3001b827 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDTO.java @@ -1,19 +1,19 @@ package me.zhengjie.modules.system.service.dto; import com.fasterxml.jackson.annotation.JsonInclude; -import lombok.Data; - +import lombok.Getter; +import lombok.Setter; +import me.zhengjie.base.BaseDTO; import javax.validation.constraints.NotNull; -import java.sql.Timestamp; -import java.io.Serializable; import java.util.List; /** * @author Zheng Jie * @date 2019-03-25 */ -@Data -public class DeptDTO implements Serializable { +@Getter +@Setter +public class DeptDTO extends BaseDTO { // ID private Long id; @@ -30,8 +30,6 @@ public class DeptDTO implements Serializable { @JsonInclude(JsonInclude.Include.NON_EMPTY) private List children; - private Timestamp createTime; - public String getLabel() { return name; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDTO.java index e05ff4e8..3b011e23 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDTO.java @@ -1,14 +1,16 @@ package me.zhengjie.modules.system.service.dto; -import lombok.Data; -import java.io.Serializable; +import lombok.Getter; +import lombok.Setter; +import me.zhengjie.base.BaseDTO; /** * @author Zheng Jie * @date 2019-04-10 */ -@Data -public class DictDTO implements Serializable { +@Getter +@Setter +public class DictDTO extends BaseDTO { private Long id; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDTO.java index 71add096..f513ebe2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDTO.java @@ -1,14 +1,16 @@ package me.zhengjie.modules.system.service.dto; -import lombok.Data; -import java.io.Serializable; +import lombok.Getter; +import lombok.Setter; +import me.zhengjie.base.BaseDTO; /** * @author Zheng Jie * @date 2019-04-10 */ -@Data -public class DictDetailDTO implements Serializable { +@Getter +@Setter +public class DictDetailDTO extends BaseDTO { private Long id; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java index c9c1259f..08e59c69 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java @@ -1,20 +1,18 @@ package me.zhengjie.modules.system.service.dto; -import lombok.Data; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; - -import java.sql.Timestamp; -import java.io.Serializable; +import me.zhengjie.base.BaseDTO; /** * @author Zheng Jie * @date 2019-03-29 */ -@Data +@Getter +@Setter @NoArgsConstructor -public class JobDTO implements Serializable { +public class JobDTO extends BaseDTO { private Long id; @@ -28,8 +26,6 @@ public class JobDTO implements Serializable { private String deptSuperiorName; - private Timestamp createTime; - public JobDTO(String name, Boolean enabled) { this.name = name; this.enabled = enabled; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java index 3b9aaae6..c0896ff9 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java @@ -1,17 +1,17 @@ package me.zhengjie.modules.system.service.dto; -import lombok.Data; - -import java.sql.Timestamp; +import lombok.Getter; +import lombok.Setter; +import me.zhengjie.base.BaseDTO; import java.util.List; -import java.util.Set; /** * @author Zheng Jie * @date 2018-12-17 */ -@Data -public class MenuDTO { +@Getter +@Setter +public class MenuDTO extends BaseDTO { private Long id; @@ -36,6 +36,4 @@ public class MenuDTO { private String icon; private List children; - - private Timestamp createTime; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionDTO.java index 3ae4eb6a..e4589e67 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionDTO.java @@ -1,17 +1,17 @@ package me.zhengjie.modules.system.service.dto; -import lombok.Data; - -import java.io.Serializable; -import java.sql.Timestamp; +import lombok.Getter; +import lombok.Setter; +import me.zhengjie.base.BaseDTO; import java.util.List; /** * @author Zheng Jie * @date 2018-12-03 */ -@Data -public class PermissionDTO implements Serializable{ +@Getter +@Setter +public class PermissionDTO extends BaseDTO { private Long id; @@ -21,18 +21,5 @@ public class PermissionDTO implements Serializable{ private String alias; - private Timestamp createTime; - private List children; - - @Override - public String toString() { - return "Permission{" + - "id=" + id + - ", name='" + name + '\'' + - ", pid=" + pid + - ", alias='" + alias + '\'' + - ", createTime=" + createTime + - '}'; - } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java index c6d68073..4d8ab7a1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java @@ -1,16 +1,17 @@ package me.zhengjie.modules.system.service.dto; -import lombok.Data; -import java.io.Serializable; -import java.sql.Timestamp; +import lombok.Getter; +import lombok.Setter; +import me.zhengjie.base.BaseDTO; import java.util.Set; /** * @author Zheng Jie * @date 2018-11-23 */ -@Data -public class RoleDTO implements Serializable { +@Getter +@Setter +public class RoleDTO extends BaseDTO { private Long id; @@ -27,6 +28,4 @@ public class RoleDTO implements Serializable { private Set menus; private Set depts; - - private Timestamp createTime; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDTO.java index 3065471b..848c1789 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDTO.java @@ -2,9 +2,9 @@ package me.zhengjie.modules.system.service.dto; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import java.io.Serializable; -import java.sql.Timestamp; +import lombok.Getter; +import lombok.Setter; +import me.zhengjie.base.BaseDTO; import java.util.Date; import java.util.Set; @@ -12,8 +12,9 @@ import java.util.Set; * @author Zheng Jie * @date 2018-11-23 */ -@Data -public class UserDTO implements Serializable { +@Getter +@Setter +public class UserDTO extends BaseDTO { @ApiModelProperty(hidden = true) private Long id; @@ -31,8 +32,6 @@ public class UserDTO implements Serializable { @JsonIgnore private String password; - private Timestamp createTime; - private Date lastPasswordResetTime; @ApiModelProperty(hidden = true) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptMapper.java index 75eadbf5..ba3be01d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptMapper.java @@ -1,6 +1,6 @@ package me.zhengjie.modules.system.service.mapper; -import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.base.BaseMapper; import me.zhengjie.modules.system.domain.Dept; import me.zhengjie.modules.system.service.dto.DeptDTO; import org.mapstruct.Mapper; @@ -11,6 +11,6 @@ import org.mapstruct.ReportingPolicy; * @date 2019-03-25 */ @Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface DeptMapper extends EntityMapper { +public interface DeptMapper extends BaseMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptSmallMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptSmallMapper.java index ede9aad3..c964081d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptSmallMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptSmallMapper.java @@ -1,6 +1,6 @@ package me.zhengjie.modules.system.service.mapper; -import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.base.BaseMapper; import me.zhengjie.modules.system.domain.Dept; import me.zhengjie.modules.system.service.dto.DeptSmallDTO; import org.mapstruct.Mapper; @@ -11,6 +11,6 @@ import org.mapstruct.ReportingPolicy; * @date 2019-03-25 */ @Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface DeptSmallMapper extends EntityMapper { +public interface DeptSmallMapper extends BaseMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictDetailMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictDetailMapper.java index 7f483190..f82c1bd5 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictDetailMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictDetailMapper.java @@ -1,6 +1,6 @@ package me.zhengjie.modules.system.service.mapper; -import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.base.BaseMapper; import me.zhengjie.modules.system.domain.DictDetail; import me.zhengjie.modules.system.service.dto.DictDetailDTO; import org.mapstruct.Mapper; @@ -11,6 +11,6 @@ import org.mapstruct.ReportingPolicy; * @date 2019-04-10 */ @Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface DictDetailMapper extends EntityMapper { +public interface DictDetailMapper extends BaseMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictMapper.java index ab5a4bd3..c5b70a25 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictMapper.java @@ -1,6 +1,6 @@ package me.zhengjie.modules.system.service.mapper; -import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.base.BaseMapper; import me.zhengjie.modules.system.domain.Dict; import me.zhengjie.modules.system.service.dto.DictDTO; import org.mapstruct.Mapper; @@ -11,6 +11,6 @@ import org.mapstruct.ReportingPolicy; * @date 2019-04-10 */ @Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface DictMapper extends EntityMapper { +public interface DictMapper extends BaseMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobMapper.java index b4d2b347..59565dfa 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobMapper.java @@ -1,6 +1,6 @@ package me.zhengjie.modules.system.service.mapper; -import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.base.BaseMapper; import me.zhengjie.modules.system.domain.Job; import me.zhengjie.modules.system.service.dto.JobDTO; import org.mapstruct.Mapper; @@ -12,7 +12,7 @@ import org.mapstruct.ReportingPolicy; * @date 2019-03-29 */ @Mapper(componentModel = "spring",uses = {DeptMapper.class},unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface JobMapper extends EntityMapper { +public interface JobMapper extends BaseMapper { @Mapping(source = "deptSuperiorName", target = "deptSuperiorName") JobDTO toDto(Job job, String deptSuperiorName); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobSmallMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobSmallMapper.java index 425cb4a0..96282b2c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobSmallMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobSmallMapper.java @@ -1,6 +1,6 @@ package me.zhengjie.modules.system.service.mapper; -import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.base.BaseMapper; import me.zhengjie.modules.system.domain.Job; import me.zhengjie.modules.system.service.dto.JobSmallDTO; import org.mapstruct.Mapper; @@ -11,6 +11,6 @@ import org.mapstruct.ReportingPolicy; * @date 2019-03-29 */ @Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface JobSmallMapper extends EntityMapper { +public interface JobSmallMapper extends BaseMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuMapper.java index 8cdaf63b..6887537f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuMapper.java @@ -1,7 +1,7 @@ package me.zhengjie.modules.system.service.mapper; +import me.zhengjie.base.BaseMapper; 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; @@ -11,6 +11,6 @@ import org.mapstruct.ReportingPolicy; * @date 2018-12-17 */ @Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface MenuMapper extends EntityMapper { +public interface MenuMapper extends BaseMapper { } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/PermissionMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/PermissionMapper.java index f86c9d4c..6d8f32f2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/PermissionMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/PermissionMapper.java @@ -1,7 +1,7 @@ package me.zhengjie.modules.system.service.mapper; import me.zhengjie.modules.system.domain.Permission; -import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.base.BaseMapper; import me.zhengjie.modules.system.service.dto.PermissionDTO; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; @@ -11,6 +11,6 @@ import org.mapstruct.ReportingPolicy; * @date 2018-11-23 */ @Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface PermissionMapper extends EntityMapper { +public interface PermissionMapper extends BaseMapper { } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleMapper.java index 9acaf31b..248b1ed0 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleMapper.java @@ -1,7 +1,7 @@ package me.zhengjie.modules.system.service.mapper; +import me.zhengjie.base.BaseMapper; 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; @@ -11,6 +11,6 @@ import org.mapstruct.ReportingPolicy; * @date 2018-11-23 */ @Mapper(componentModel = "spring", uses = {PermissionMapper.class, MenuMapper.class, DeptMapper.class}, unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface RoleMapper extends EntityMapper { +public interface RoleMapper extends BaseMapper { } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleSmallMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleSmallMapper.java index 53d97ccb..ae23cdd3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleSmallMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleSmallMapper.java @@ -1,8 +1,7 @@ package me.zhengjie.modules.system.service.mapper; -import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.base.BaseMapper; import me.zhengjie.modules.system.domain.Role; -import me.zhengjie.modules.system.service.dto.RoleDTO; import me.zhengjie.modules.system.service.dto.RoleSmallDTO; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; @@ -12,6 +11,6 @@ import org.mapstruct.ReportingPolicy; * @date 2019-5-23 */ @Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface RoleSmallMapper extends EntityMapper { +public interface RoleSmallMapper extends BaseMapper { } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/UserMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/UserMapper.java index 248003a3..13654868 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/UserMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/UserMapper.java @@ -1,20 +1,18 @@ package me.zhengjie.modules.system.service.mapper; +import me.zhengjie.base.BaseMapper; 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.Mapping; import org.mapstruct.ReportingPolicy; -import java.util.List; - /** * @author Zheng Jie * @date 2018-11-23 */ @Mapper(componentModel = "spring",uses = {RoleMapper.class, DeptMapper.class, JobMapper.class},unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface UserMapper extends EntityMapper { +public interface UserMapper extends BaseMapper { @Mapping(source = "user.userAvatar.realName",target = "avatar") UserDTO toDto(User user); diff --git a/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl b/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl index bf4f3e90..0b207a7b 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl @@ -1,6 +1,6 @@ package ${package}.service.mapper; -import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.base.BaseMapper; import ${package}.domain.${className}; import ${package}.service.dto.${className}DTO; import org.mapstruct.Mapper; @@ -11,6 +11,6 @@ import org.mapstruct.ReportingPolicy; * @date ${date} */ @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface ${className}Mapper extends EntityMapper<${className}DTO, ${className}> { +public interface ${className}Mapper extends BaseMapper<${className}DTO, ${className}> { } \ No newline at end of file diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/LocalStorage.java b/eladmin-tools/src/main/java/me/zhengjie/domain/LocalStorage.java index 2072c68a..cbe37c00 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/LocalStorage.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/LocalStorage.java @@ -1,29 +1,22 @@ package me.zhengjie.domain; -import lombok.AllArgsConstructor; -import lombok.Data; +import lombok.*; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; -import lombok.NoArgsConstructor; -import org.hibernate.annotations.CreationTimestamp; -import org.hibernate.annotations.UpdateTimestamp; - +import me.zhengjie.base.BaseEntity; import javax.persistence.*; -import java.sql.Timestamp; -import java.io.Serializable; /** * @author Zheng Jie * @date 2019-09-05 */ +@Getter +@Setter @Entity -@Data @Table(name="local_storage") -@AllArgsConstructor @NoArgsConstructor -public class LocalStorage implements Serializable { +public class LocalStorage extends BaseEntity { - // ID @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") @@ -57,16 +50,6 @@ public class LocalStorage implements Serializable { @Column(name = "operate") private String operate; - // 创建日期 - @Column(name = "create_time") - @CreationTimestamp - private Timestamp createTime; - - // 修改日期 - @Column(name = "update_time") - @UpdateTimestamp - private Timestamp updateTime; - public LocalStorage(String realName,String name, String suffix, String path, String type, String size, String operate) { this.realName = realName; this.name = name; diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageDTO.java b/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageDTO.java index 7ad11cb1..d05b81b3 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageDTO.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageDTO.java @@ -1,17 +1,16 @@ package me.zhengjie.service.dto; -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.Data; -import java.sql.Timestamp; -import java.io.Serializable; - +import lombok.Getter; +import lombok.Setter; +import me.zhengjie.base.BaseDTO; /** * @author Zheng Jie * @date 2019-09-05 */ -@Data -public class LocalStorageDTO implements Serializable { +@Getter +@Setter +public class LocalStorageDTO extends BaseDTO { // ID private Long id; @@ -32,10 +31,4 @@ public class LocalStorageDTO implements Serializable { // 操作人 private String operate; - - // 创建日期 - private Timestamp createTime; - - // 修改日期 - private Timestamp updateTime; } \ No newline at end of file diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java index f6b56c30..2c3f42d5 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java @@ -56,7 +56,7 @@ public class PictureServiceImpl implements PictureService { public Picture upload(MultipartFile multipartFile, String username) { File file = FileUtil.toFile(multipartFile); // 验证是否重复上传 - Picture picture = pictureRepository.findByMd5Code(FileUtil.getMD5(file)); + Picture picture = pictureRepository.findByMd5Code(FileUtil.getMd5(file)); if(picture != null){ return picture; } @@ -70,7 +70,7 @@ public class PictureServiceImpl implements PictureService { picture = JSON.parseObject(jsonObject.get("data").toString(), Picture.class); picture.setSize(FileUtil.getSize(Integer.parseInt(picture.getSize()))); picture.setUsername(username); - picture.setMd5Code(FileUtil.getMD5(file)); + picture.setMd5Code(FileUtil.getMd5(file)); picture.setFilename(FileUtil.getFileNameNoEx(multipartFile.getOriginalFilename())+"."+FileUtil.getExtensionName(multipartFile.getOriginalFilename())); pictureRepository.save(picture); //删除临时文件 @@ -97,7 +97,6 @@ public class PictureServiceImpl implements PictureService { } catch(Exception e){ pictureRepository.delete(picture); } - } @Override diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/mapper/LocalStorageMapper.java b/eladmin-tools/src/main/java/me/zhengjie/service/mapper/LocalStorageMapper.java index 45175f5f..cc013849 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/mapper/LocalStorageMapper.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/mapper/LocalStorageMapper.java @@ -1,6 +1,6 @@ package me.zhengjie.service.mapper; -import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.base.BaseMapper; import me.zhengjie.domain.LocalStorage; import me.zhengjie.service.dto.LocalStorageDTO; import org.mapstruct.Mapper; @@ -11,6 +11,6 @@ import org.mapstruct.ReportingPolicy; * @date 2019-09-05 */ @Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface LocalStorageMapper extends EntityMapper { +public interface LocalStorageMapper extends BaseMapper { } \ No newline at end of file From f26342ee0e798bd14748369ba8823b65879623e4 Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Fri, 25 Oct 2019 18:14:32 +0800 Subject: [PATCH 05/25] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=8C=E6=9B=B4=E6=8D=A2=E5=9B=BE=E5=BD=A2=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{redis => config}/RedisConfig.java | 77 ++++++- .../me/zhengjie/config/SwaggerConfig.java | 130 ++++++++++++ .../exception/BadRequestException.java | 1 - .../exception/EntityExistException.java | 16 +- .../exception/EntityNotFoundException.java | 17 +- .../zhengjie/exception/handler/ApiError.java | 17 +- .../handler/GlobalExceptionHandler.java | 21 +- .../redis/FastJsonRedisSerializer.java | 41 ---- .../zhengjie/redis/StringRedisSerializer.java | 42 ---- .../me/zhengjie/swagger2/SwaggerConfig.java | 62 ------ .../zhengjie/swagger2/SwaggerDataConfig.java | 1 - .../security/config/SecurityConfig.java | 5 +- .../rest/AuthenticationController.java | 33 +-- .../security/utils/VerifyCodeUtils.java | 195 ------------------ .../src/main/resources/config/application.yml | 2 +- pom.xml | 5 + 16 files changed, 252 insertions(+), 413 deletions(-) rename eladmin-common/src/main/java/me/zhengjie/{redis => config}/RedisConfig.java (73%) create mode 100644 eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java delete mode 100644 eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java delete mode 100644 eladmin-common/src/main/java/me/zhengjie/redis/StringRedisSerializer.java delete mode 100644 eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java delete mode 100644 eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerDataConfig.java delete mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/security/utils/VerifyCodeUtils.java diff --git a/eladmin-common/src/main/java/me/zhengjie/redis/RedisConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java similarity index 73% rename from eladmin-common/src/main/java/me/zhengjie/redis/RedisConfig.java rename to eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java index e84e2af3..f8d76c96 100644 --- a/eladmin-common/src/main/java/me/zhengjie/redis/RedisConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java @@ -1,8 +1,11 @@ -package me.zhengjie.redis; +package me.zhengjie.config; +import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.parser.ParserConfig; +import com.alibaba.fastjson.serializer.SerializerFeature; import lombok.extern.slf4j.Slf4j; +import me.zhengjie.utils.StringUtils; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.data.redis.RedisProperties; @@ -19,6 +22,10 @@ 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.RedisSerializer; +import org.springframework.data.redis.serializer.SerializationException; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.time.Duration; /** @@ -116,3 +123,71 @@ public class RedisConfig extends CachingConfigurerSupport { } } + +/** + * Value 序列化 + * + * @author / + * @param + */ + class FastJsonRedisSerializer implements RedisSerializer { + + private Class clazz; + + FastJsonRedisSerializer(Class clazz) { + super(); + this.clazz = clazz; + } + + @Override + public byte[] serialize(T t) throws SerializationException { + if (t == null) { + return new byte[0]; + } + return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(StandardCharsets.UTF_8); + } + + @Override + public T deserialize(byte[] bytes) throws SerializationException { + if (bytes == null || bytes.length <= 0) { + return null; + } + String str = new String(bytes, StandardCharsets.UTF_8); + return JSON.parseObject(str, clazz); + } + +} + +/** + * 重写序列化器 + * + * @author / + */ +class StringRedisSerializer implements RedisSerializer { + + private final Charset charset; + + StringRedisSerializer() { + this(StandardCharsets.UTF_8); + } + + private StringRedisSerializer(Charset charset) { + Assert.notNull(charset, "Charset must not be null!"); + this.charset = charset; + } + + @Override + public String deserialize(byte[] bytes) { + return (bytes == null ? null : new String(bytes, charset)); + } + + @Override + public byte[] serialize(Object object) { + String string = JSON.toJSONString(object); + if (StringUtils.isBlank(string)) { + return null; + } + string = string.replace("\"", ""); + return string.getBytes(charset); + } +} diff --git a/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java new file mode 100644 index 00000000..de7dde31 --- /dev/null +++ b/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java @@ -0,0 +1,130 @@ +package me.zhengjie.config; + +import com.fasterxml.classmate.TypeResolver; +import com.google.common.base.Predicates; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; +import org.springframework.data.domain.Pageable; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.ParameterBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.schema.AlternateTypeRule; +import springfox.documentation.schema.AlternateTypeRuleConvention; +import springfox.documentation.schema.ModelRef; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Parameter; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; +import java.util.ArrayList; +import java.util.List; + +import static com.google.common.collect.Lists.newArrayList; +import static springfox.documentation.schema.AlternateTypeRules.newRule; + +/** + * api页面 /swagger-ui.html + * @author Zheng Jie + * @date 2018-11-23 + */ + +@Configuration +@EnableSwagger2 +public class SwaggerConfig { + + @Value("${jwt.header}") + private String tokenHeader; + + @Value("${swagger.enabled}") + private Boolean enabled; + + @Bean + public Docket createRestApi() { + ParameterBuilder ticketPar = new ParameterBuilder(); + List pars = new ArrayList<>(); + ticketPar.name(tokenHeader).description("token") + .modelRef(new ModelRef("string")) + .parameterType("header") + .defaultValue("Bearer ") + .required(true) + .build(); + pars.add(ticketPar.build()); + return new Docket(DocumentationType.SWAGGER_2) + .enable(enabled) + .apiInfo(apiInfo()) + .select() + .paths(Predicates.not(PathSelectors.regex("/error.*"))) + .build() + .globalOperationParameters(pars); + } + + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("eladmin 接口文档") + .version("2.2") + .build(); + } + +} + +/** + * 将Pageable转换展示在swagger中 + */ +@Configuration +class SwaggerDataConfig { + + @Bean + public AlternateTypeRuleConvention pageableConvention(final TypeResolver resolver) { + return new AlternateTypeRuleConvention() { + @Override + public int getOrder() { + return Ordered.HIGHEST_PRECEDENCE; + } + + @Override + public List rules() { + return newArrayList(newRule(resolver.resolve(Pageable.class), resolver.resolve(Page.class))); + } + }; + } + + @ApiModel + static class Page { + @ApiModelProperty("页码 (0..N)") + private Integer page; + + @ApiModelProperty("每页显示的数目") + private Integer size; + + @ApiModelProperty("以下列格式排序标准:property[,asc | desc]。 默认排序顺序为升序。 支持多种排序条件:如:id,asc") + private List sort; + + public Integer getPage() { + return page; + } + + public void setPage(Integer page) { + this.page = page; + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + public List getSort() { + return sort; + } + + public void setSort(List sort) { + this.sort = sort; + } + } +} diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/BadRequestException.java b/eladmin-common/src/main/java/me/zhengjie/exception/BadRequestException.java index adef657a..d17b18dd 100644 --- a/eladmin-common/src/main/java/me/zhengjie/exception/BadRequestException.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/BadRequestException.java @@ -2,7 +2,6 @@ package me.zhengjie.exception; import lombok.Getter; import org.springframework.http.HttpStatus; - import static org.springframework.http.HttpStatus.BAD_REQUEST; /** diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/EntityExistException.java b/eladmin-common/src/main/java/me/zhengjie/exception/EntityExistException.java index f9aaa553..5ade7950 100644 --- a/eladmin-common/src/main/java/me/zhengjie/exception/EntityExistException.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/EntityExistException.java @@ -1,9 +1,6 @@ package me.zhengjie.exception; import org.springframework.util.StringUtils; -import java.util.HashMap; -import java.util.Map; -import java.util.stream.IntStream; /** * @author Zheng Jie @@ -12,16 +9,11 @@ import java.util.stream.IntStream; public class EntityExistException extends RuntimeException { public EntityExistException(Class clazz, String field, String val) { - super(EntityExistException.generateMessage(clazz.getSimpleName(), toMap(field, val))); + super(EntityExistException.generateMessage(clazz.getSimpleName(), field, val)); } - private static String generateMessage(String entity, Map saveBodyParams) { - return StringUtils.capitalize(entity) + - " 已存在 " + - saveBodyParams; - } - - private static Map toMap(String... entries) { - return new HashMap(){{ put(entries[0], entries[1]); }}; + private static String generateMessage(String entity, String field, String val) { + return StringUtils.capitalize(entity) + + " with " + field + " "+ val + " existed"; } } \ No newline at end of file diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/EntityNotFoundException.java b/eladmin-common/src/main/java/me/zhengjie/exception/EntityNotFoundException.java index c7e2db6a..295bb280 100644 --- a/eladmin-common/src/main/java/me/zhengjie/exception/EntityNotFoundException.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/EntityNotFoundException.java @@ -2,10 +2,6 @@ package me.zhengjie.exception; import org.springframework.util.StringUtils; -import java.util.HashMap; -import java.util.Map; -import java.util.stream.IntStream; - /** * @author Zheng Jie * @date 2018-11-23 @@ -13,16 +9,11 @@ import java.util.stream.IntStream; public class EntityNotFoundException extends RuntimeException { public EntityNotFoundException(Class clazz, String field, String val) { - super(EntityNotFoundException.generateMessage(clazz.getSimpleName(), toMap(field, val))); + super(EntityNotFoundException.generateMessage(clazz.getSimpleName(), field, val)); } - private static String generateMessage(String entity, Map searchParams) { - return StringUtils.capitalize(entity) + - " 不存在 " + - searchParams; - } - - private static Map toMap(String... entries) { - return new HashMap(){{ put(entries[0], entries[1]); }}; + private static String generateMessage(String entity, String field, String val) { + return StringUtils.capitalize(entity) + + " with " + field + " "+ val + " does not exist"; } } \ No newline at end of file diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java b/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java index 433104f9..9cabb324 100644 --- a/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java @@ -12,7 +12,7 @@ import java.time.LocalDateTime; @Data class ApiError { - private Integer status; + private Integer status = 400; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime timestamp; private String message; @@ -21,10 +21,17 @@ class ApiError { timestamp = LocalDateTime.now(); } - ApiError(Integer status, String message) { - this(); - this.status = status; - this.message = message; + public static ApiError error(String message){ + ApiError apiError = new ApiError(); + apiError.setMessage(message); + return apiError; + } + + public static ApiError error(Integer status, String message){ + ApiError apiError = new ApiError(); + apiError.setStatus(status); + apiError.setMessage(message); + return apiError; } } diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java b/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java index 44467412..3815ea40 100644 --- a/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java @@ -11,9 +11,7 @@ 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 java.util.Objects; - import static org.springframework.http.HttpStatus.*; /** @@ -31,8 +29,7 @@ public class GlobalExceptionHandler { public ResponseEntity handleException(Throwable e){ // 打印堆栈信息 log.error(ThrowableUtil.getStackTrace(e)); - ApiError apiError = new ApiError(BAD_REQUEST.value(),e.getMessage()); - return buildResponseEntity(apiError); + return buildResponseEntity(ApiError.error(e.getMessage())); } /** @@ -42,8 +39,7 @@ public class GlobalExceptionHandler { public ResponseEntity handleAccessDeniedException(AccessDeniedException e){ // 打印堆栈信息 log.error(ThrowableUtil.getStackTrace(e)); - ApiError apiError = new ApiError(FORBIDDEN.value(),e.getMessage()); - return buildResponseEntity(apiError); + return buildResponseEntity(ApiError.error(FORBIDDEN.value(),e.getMessage())); } /** @@ -53,8 +49,7 @@ public class GlobalExceptionHandler { public ResponseEntity badRequestException(BadRequestException e) { // 打印堆栈信息 log.error(ThrowableUtil.getStackTrace(e)); - ApiError apiError = new ApiError(e.getStatus(),e.getMessage()); - return buildResponseEntity(apiError); + return buildResponseEntity(ApiError.error(e.getStatus(),e.getMessage())); } /** @@ -64,8 +59,7 @@ public class GlobalExceptionHandler { public ResponseEntity entityExistException(EntityExistException e) { // 打印堆栈信息 log.error(ThrowableUtil.getStackTrace(e)); - ApiError apiError = new ApiError(BAD_REQUEST.value(),e.getMessage()); - return buildResponseEntity(apiError); + return buildResponseEntity(ApiError.error(e.getMessage())); } /** @@ -75,8 +69,7 @@ public class GlobalExceptionHandler { public ResponseEntity entityNotFoundException(EntityNotFoundException e) { // 打印堆栈信息 log.error(ThrowableUtil.getStackTrace(e)); - ApiError apiError = new ApiError(NOT_FOUND.value(),e.getMessage()); - return buildResponseEntity(apiError); + return buildResponseEntity(ApiError.error(NOT_FOUND.value(),e.getMessage())); } /** @@ -87,8 +80,8 @@ public class GlobalExceptionHandler { // 打印堆栈信息 log.error(ThrowableUtil.getStackTrace(e)); String[] str = Objects.requireNonNull(e.getBindingResult().getAllErrors().get(0).getCodes())[1].split("\\."); - ApiError apiError = new ApiError(BAD_REQUEST.value(), str[1] + ":" + e.getBindingResult().getAllErrors().get(0).getDefaultMessage()); - return buildResponseEntity(apiError); + String message = str[1] + ":" + e.getBindingResult().getAllErrors().get(0).getDefaultMessage(); + return buildResponseEntity(ApiError.error(message)); } /** diff --git a/eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java b/eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java deleted file mode 100644 index 9465aec3..00000000 --- a/eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java +++ /dev/null @@ -1,41 +0,0 @@ -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.StandardCharsets; - -/** - * Value 序列化 - * - * @author / - * @param - */ -public class FastJsonRedisSerializer implements RedisSerializer { - - private Class clazz; - - FastJsonRedisSerializer(Class clazz) { - super(); - this.clazz = clazz; - } - - @Override - public byte[] serialize(T t) throws SerializationException { - if (t == null) { - return new byte[0]; - } - return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(StandardCharsets.UTF_8); - } - - @Override - public T deserialize(byte[] bytes) throws SerializationException { - if (bytes == null || bytes.length <= 0) { - return null; - } - String str = new String(bytes, StandardCharsets.UTF_8); - return JSON.parseObject(str, clazz); - } - -} diff --git a/eladmin-common/src/main/java/me/zhengjie/redis/StringRedisSerializer.java b/eladmin-common/src/main/java/me/zhengjie/redis/StringRedisSerializer.java deleted file mode 100644 index 0419d5cb..00000000 --- a/eladmin-common/src/main/java/me/zhengjie/redis/StringRedisSerializer.java +++ /dev/null @@ -1,42 +0,0 @@ -package me.zhengjie.redis; - -import cn.hutool.core.lang.Assert; -import com.alibaba.fastjson.JSON; -import me.zhengjie.utils.StringUtils; -import org.springframework.data.redis.serializer.RedisSerializer; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; - -/** - * 重写序列化器 - * - * @author / - */ -public class StringRedisSerializer implements RedisSerializer { - - private final Charset charset; - - StringRedisSerializer() { - this(StandardCharsets.UTF_8); - } - - private StringRedisSerializer(Charset charset) { - Assert.notNull(charset, "Charset must not be null!"); - this.charset = charset; - } - - @Override - public String deserialize(byte[] bytes) { - return (bytes == null ? null : new String(bytes, charset)); - } - - @Override - public byte[] serialize(Object object) { - String string = JSON.toJSONString(object); - if (StringUtils.isBlank(string)) { - return null; - } - string = string.replace("\"", ""); - return string.getBytes(charset); - } -} \ No newline at end of file diff --git a/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java b/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java deleted file mode 100644 index d587731e..00000000 --- a/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java +++ /dev/null @@ -1,62 +0,0 @@ -package me.zhengjie.swagger2; - -import com.google.common.base.Predicates; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import springfox.documentation.builders.ApiInfoBuilder; -import springfox.documentation.builders.ParameterBuilder; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.schema.ModelRef; -import springfox.documentation.service.ApiInfo; -import springfox.documentation.service.Parameter; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; -import java.util.ArrayList; -import java.util.List; - -/** - * api页面 /swagger-ui.html - * @author Zheng Jie - * @date 2018-11-23 - */ - -@Configuration -@EnableSwagger2 -public class SwaggerConfig { - - @Value("${jwt.header}") - private String tokenHeader; - - @Value("${swagger.enabled}") - private Boolean enabled; - - @Bean - public Docket createRestApi() { - ParameterBuilder ticketPar = new ParameterBuilder(); - List pars = new ArrayList<>(); - ticketPar.name(tokenHeader).description("token") - .modelRef(new ModelRef("string")) - .parameterType("header") - .defaultValue("Bearer ") - .required(true) - .build(); - pars.add(ticketPar.build()); - return new Docket(DocumentationType.SWAGGER_2) - .enable(enabled) - .apiInfo(apiInfo()) - .select() - .paths(Predicates.not(PathSelectors.regex("/error.*"))) - .build() - .globalOperationParameters(pars); - } - - private ApiInfo apiInfo() { - return new ApiInfoBuilder() - .title("eladmin 接口文档") - .version("2.2") - .build(); - } - -} diff --git a/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerDataConfig.java b/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerDataConfig.java deleted file mode 100644 index 35f0edf1..00000000 --- a/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerDataConfig.java +++ /dev/null @@ -1 +0,0 @@ -package me.zhengjie.swagger2; import com.fasterxml.classmate.TypeResolver; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.Ordered; import org.springframework.data.domain.Pageable; import springfox.documentation.schema.AlternateTypeRule; import springfox.documentation.schema.AlternateTypeRuleConvention; import java.util.List; import static com.google.common.collect.Lists.newArrayList; import static springfox.documentation.schema.AlternateTypeRules.newRule; /** * 将Pageable转换展示在swagger中 */ @Configuration public class SwaggerDataConfig { @Bean public AlternateTypeRuleConvention pageableConvention(final TypeResolver resolver) { return new AlternateTypeRuleConvention() { @Override public int getOrder() { return Ordered.HIGHEST_PRECEDENCE; } @Override public List rules() { return newArrayList(newRule(resolver.resolve(Pageable.class), resolver.resolve(Page.class))); } }; } @ApiModel static class Page { @ApiModelProperty("页码 (0..N)") private Integer page; @ApiModelProperty("每页显示的数目") private Integer size; @ApiModelProperty("以下列格式排序标准:property[,asc | desc]。 默认排序顺序为升序。 支持多种排序条件:如:id,asc") private List sort; public Integer getPage() { return page; } public void setPage(Integer page) { this.page = page; } public Integer getSize() { return size; } public void setSize(Integer size) { this.size = size; } public List getSort() { return sort; } public void setSort(List sort) { this.sort = sort; } } } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java index 0e5f2575..ff0f3552 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java @@ -68,7 +68,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity httpSecurity) throws Exception { - String loginPath = "login"; httpSecurity // 禁用 CSRF @@ -90,8 +89,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { "/**/*.js" ).anonymous() - .antMatchers( HttpMethod.POST,"/auth/"+ loginPath).anonymous() - .antMatchers("/auth/vCode").anonymous() + .antMatchers(HttpMethod.POST,"/auth/login").anonymous() + .antMatchers(HttpMethod.GET,"/auth/code").anonymous() // 支付宝回调 .antMatchers("/api/aliPay/return").anonymous() .antMatchers("/api/aliPay/notify").anonymous() diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java index de76fb7a..d27e1fd5 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java @@ -1,7 +1,7 @@ package me.zhengjie.modules.security.rest; -import cn.hutool.core.codec.Base64; import cn.hutool.core.util.IdUtil; +import com.wf.captcha.ArithmeticCaptcha; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -12,7 +12,6 @@ import me.zhengjie.modules.security.security.AuthenticationInfo; import me.zhengjie.modules.security.security.AuthorizationUser; import me.zhengjie.modules.security.security.ImgResult; import me.zhengjie.modules.security.security.JwtUser; -import me.zhengjie.modules.security.utils.VerifyCodeUtils; import me.zhengjie.utils.EncryptUtils; import me.zhengjie.modules.security.utils.JwtTokenUtil; import me.zhengjie.utils.SecurityUtils; @@ -24,8 +23,6 @@ import org.springframework.security.authentication.AccountExpiredException; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.io.ByteArrayOutputStream; -import java.io.IOException; /** * @author Zheng Jie @@ -93,24 +90,16 @@ public class AuthenticationController { } @ApiOperation("获取验证码") - @GetMapping(value = "/vCode") - public ImgResult getCode() throws IOException { - - //生成随机字串 - String verifyCode = VerifyCodeUtils.generateVerifyCode(4); + @GetMapping(value = "/code") + public ImgResult getCode(){ + // 算术类型 https://gitee.com/whvse/EasyCaptcha + ArithmeticCaptcha captcha = new ArithmeticCaptcha(111, 36); + // 几位数运算,默认是两位 + captcha.setLen(2); + // 获取运算的结果:5 + String result = captcha.text(); String uuid = IdUtil.simpleUUID(); - redisService.saveCode(uuid,verifyCode); - // 生成图片 - int w = 111, h = 36; - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - VerifyCodeUtils.outputImage(w, h, stream, verifyCode); - try { - return new ImgResult(Base64.encode(stream.toByteArray()),uuid); - } catch (Exception e) { - e.printStackTrace(); - return null; - } finally { - stream.close(); - } + redisService.saveCode(uuid,result); + return new ImgResult(captcha.toBase64(),uuid); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/VerifyCodeUtils.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/VerifyCodeUtils.java deleted file mode 100644 index 406b2ded..00000000 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/VerifyCodeUtils.java +++ /dev/null @@ -1,195 +0,0 @@ -package me.zhengjie.modules.security.utils; - -import me.zhengjie.utils.StringUtils; - -import java.awt.Color; -import java.awt.Font; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.RenderingHints; -import java.awt.geom.AffineTransform; -import java.awt.image.BufferedImage; -import java.io.IOException; -import java.io.OutputStream; -import java.util.Arrays; -import java.util.Random; -import javax.imageio.ImageIO; - -/** - * @author https://blog.csdn.net/ruixue0117/article/details/22829557 - * @date 2019-6-20 17:28:53 - */ -public class VerifyCodeUtils{ - - //使用到Algerian字体,系统里没有的话需要安装字体,字体只显示大写,去掉了1,0,i,o几个容易混淆的字符 - private static final String VERIFY_CODES = "23456789ABCDEFGHJKLMNPQRSTUVWXYZ"; - private static Random random = new Random(); - - - /** - * 使用系统默认字符源生成验证码 - * @param verifySize 验证码长度 - * @return 验证码 - */ - public static String generateVerifyCode(int verifySize){ - return generateVerifyCode(verifySize, VERIFY_CODES); - } - - /** - * 使用指定源生成验证码 - * @param verifySize 验证码长度 - * @param sources 验证码字符源 - * @return 验证码 - */ - private static String generateVerifyCode(int verifySize, String sources){ - if(StringUtils.isBlank(sources)){ - sources = VERIFY_CODES; - } - int codesLen = sources.length(); - Random rand = new Random(System.currentTimeMillis()); - StringBuilder verifyCode = new StringBuilder(verifySize); - for(int i = 0; i < verifySize; i++){ - verifyCode.append(sources.charAt(rand.nextInt(codesLen-1))); - } - return verifyCode.toString(); - } - - /** - * 输出指定验证码图片流 - * @param w / - * @param h / - * @param os / - * @param code / - * @throws IOException / - */ - public static void outputImage(int w, int h, OutputStream os, String code) throws IOException{ - int verifySize = code.length(); - BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); - Random rand = new Random(); - Graphics2D g2 = image.createGraphics(); - g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); - Color[] colors = new Color[5]; - Color[] colorSpaces = new Color[] { Color.WHITE, Color.CYAN, - Color.GRAY, Color.LIGHT_GRAY, Color.MAGENTA, Color.ORANGE, - Color.PINK, Color.YELLOW }; - float[] fractions = new float[colors.length]; - for(int i = 0; i < colors.length; i++){ - colors[i] = colorSpaces[rand.nextInt(colorSpaces.length)]; - fractions[i] = rand.nextFloat(); - } - Arrays.sort(fractions); - - g2.setColor(Color.GRAY);// 设置边框色 - g2.fillRect(0, 0, w, h); - - Color c = getRandColor(200, 250); - g2.setColor(c);// 设置背景色 - g2.fillRect(0, 2, w, h-4); - - //绘制干扰线 - Random random = new Random(); - g2.setColor(getRandColor(160, 200));// 设置线条的颜色 - for (int i = 0; i < 20; i++) { - int x = random.nextInt(w - 1); - int y = random.nextInt(h - 1); - int xl = random.nextInt(6) + 1; - int yl = random.nextInt(12) + 1; - g2.drawLine(x, y, x + xl + 40, y + yl + 20); - } - - // 添加噪点 - float yawpRate = 0.05f;// 噪声率 - int area = (int) (yawpRate * w * h); - for (int i = 0; i < area; i++) { - int x = random.nextInt(w); - int y = random.nextInt(h); - int rgb = getRandomIntColor(); - image.setRGB(x, y, rgb); - } - - shear(g2, w, h, c);// 使图片扭曲 - - g2.setColor(getRandColor(100, 160)); - int fontSize = h-4; - Font font = new Font("Algerian", Font.ITALIC, fontSize); - g2.setFont(font); - char[] chars = code.toCharArray(); - for(int i = 0; i < verifySize; i++){ - AffineTransform affine = new AffineTransform(); - affine.setToRotation(Math.PI / 4 * rand.nextDouble() * (rand.nextBoolean() ? 1 : -1), (w / verifySize) * i + fontSize/2, h/2); - g2.setTransform(affine); - g2.drawChars(chars, i, 1, ((w-10) / verifySize) * i + 5, h/2 + fontSize/2 - 10); - } - - g2.dispose(); - ImageIO.write(image, "jpg", os); - } - - private static Color getRandColor(int fc, int bc) { - if (fc > 255) - fc = 255; - if (bc > 255) - bc = 255; - int r = fc + random.nextInt(bc - fc); - int g = fc + random.nextInt(bc - fc); - int b = fc + random.nextInt(bc - fc); - return new Color(r, g, b); - } - - private static int getRandomIntColor() { - int[] rgb = getRandomRgb(); - int color = 0; - for (int c : rgb) { - color = color << 8; - color = color | c; - } - return color; - } - - private static int[] getRandomRgb() { - int[] rgb = new int[3]; - for (int i = 0; i < 3; i++) { - rgb[i] = random.nextInt(255); - } - return rgb; - } - - private static void shear(Graphics g, int w1, int h1, Color color) { - shearX(g, w1, h1, color); - shearY(g, w1, h1, color); - } - - private static void shearX(Graphics g, int w1, int h1, Color color) { - int period = random.nextInt(2); - int frames = 1; - int phase = random.nextInt(2); - for (int i = 0; i < h1; i++) { - double d = (double) (period >> 1) - * Math.sin((double) i / (double) period - + (6.2831853071795862D * (double) phase) - / (double) frames); - g.copyArea(0, i, w1, 1, (int) d, 0); - g.setColor(color); - g.drawLine((int) d, i, 0, i); - g.drawLine((int) d + w1, i, w1, i); - } - - } - - private static void shearY(Graphics g, int w1, int h1, Color color) { - int period = random.nextInt(40) + 10; // 50; - int frames = 20; - int phase = 7; - for (int i = 0; i < w1; i++) { - double d = (double) (period >> 1) - * Math.sin((double) i / (double) period - + (6.2831853071795862D * (double) phase) - / (double) frames); - g.copyArea(i, 0, 1, h1, 0, (int) d); - g.setColor(color); - g.drawLine(i, (int) d, i, 0); - g.drawLine(i, (int) d + h1, i, h1); - - } - } -} \ 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 index a98b7945..c45c9529 100644 --- a/eladmin-system/src/main/resources/config/application.yml +++ b/eladmin-system/src/main/resources/config/application.yml @@ -22,7 +22,7 @@ spring: redis: #数据库索引 - database: 1 + database: 0 host: 127.0.0.1 port: 6379 password: diff --git a/pom.xml b/pom.xml index 541cb331..87bd2062 100644 --- a/pom.xml +++ b/pom.xml @@ -195,6 +195,11 @@ javax.inject 1 + + com.github.whvcse + easy-captcha + 1.6.2 + From 0c738b1ef3c8a0ac05d3d5625ffb625c3a383e78 Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Sat, 26 Oct 2019 11:58:07 +0800 Subject: [PATCH 06/25] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=8C=E8=8E=B7=E5=8F=96Ip=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/zhengjie/aspect/LimitAspect.java | 8 ++--- .../java/me/zhengjie/base/BaseEntity.java | 2 -- .../java/me/zhengjie/config/RedisConfig.java | 7 ++--- .../me/zhengjie/config/SwaggerConfig.java | 30 +++---------------- .../java/me/zhengjie/utils/StringUtils.java | 24 ++++++++++----- .../me/zhengjie/service/GenConfigService.java | 4 --- .../service/impl/GeneratorServiceImpl.java | 2 ++ .../java/me/zhengjie/aspect/LogAspect.java | 11 ++++--- .../monitor/config/VisitsInitialization.java | 2 +- .../monitor/rest/VisitsController.java | 1 - .../modules/monitor/service/RedisService.java | 1 - .../modules/quartz/domain/QuartzJob.java | 6 ++-- .../modules/quartz/task/TestTask.java | 3 +- .../modules/quartz/utils/ExecutionJob.java | 1 + .../zhengjie/modules/system/domain/Dept.java | 1 - .../zhengjie/modules/system/domain/Dict.java | 3 -- .../modules/system/domain/DictDetail.java | 3 -- .../zhengjie/modules/system/domain/Job.java | 4 --- .../zhengjie/modules/system/domain/Menu.java | 3 -- .../modules/system/domain/Permission.java | 3 -- .../zhengjie/modules/system/domain/Role.java | 3 -- .../zhengjie/modules/system/domain/User.java | 2 +- .../modules/system/domain/UserAvatar.java | 3 -- .../modules/system/rest/DictController.java | 1 - .../system/rest/DictDetailController.java | 9 ++---- .../modules/system/rest/JobController.java | 3 -- .../modules/system/rest/MenuController.java | 4 ++- .../system/service/dto/RoleSmallDTO.java | 3 -- .../service/impl/DictDetailServiceImpl.java | 2 -- .../java/me/zhengjie/domain/QiniuContent.java | 2 +- .../repository/PictureRepository.java | 2 -- .../VerificationCodeRepository.java | 6 ++-- .../me/zhengjie/service/AlipayService.java | 3 -- .../me/zhengjie/service/EmailService.java | 2 +- .../service/mapper/LocalStorageMapper.java | 2 +- 35 files changed, 54 insertions(+), 112 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java index 17e2c469..b8b6cf9f 100644 --- a/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java +++ b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java @@ -23,10 +23,10 @@ import java.lang.reflect.Method; @Component public class LimitAspect { - private final RedisTemplate redisTemplate; + private final RedisTemplate redisTemplate; private static final Logger logger = LoggerFactory.getLogger(LimitAspect.class); - public LimitAspect(RedisTemplate redisTemplate) { + public LimitAspect(RedisTemplate redisTemplate) { this.redisTemplate = redisTemplate; } @@ -50,11 +50,11 @@ public class LimitAspect { } } - ImmutableList keys = ImmutableList.of(StringUtils.join(limit.prefix(), "_", key, "_", request.getRequestURI().replaceAll("/","_"))); + ImmutableList keys = ImmutableList.of(StringUtils.join(limit.prefix(), "_", key, "_", request.getRequestURI().replaceAll("/","_"))); String luaScript = buildLuaScript(); RedisScript redisScript = new DefaultRedisScript<>(luaScript, Number.class); - Number count = (Number) redisTemplate.execute(redisScript, keys, limit.count(), limit.period()); + Number count = redisTemplate.execute(redisScript, keys, limit.count(), limit.period()); if (null != count && count.intValue() <= limit.count()) { logger.info("第{}次访问key为 {},描述为 [{}] 的接口", count, keys, limit.name()); return joinPoint.proceed(); diff --git a/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java b/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java index a1fdda06..2e9cc934 100644 --- a/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java +++ b/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java @@ -31,8 +31,6 @@ public class BaseEntity implements Serializable { @UpdateTimestamp private Timestamp updateTime; - public @interface New {} - public @interface Update {} @Override diff --git a/eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java index f8d76c96..99413a72 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java @@ -23,7 +23,6 @@ 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.RedisSerializer; -import org.springframework.data.redis.serializer.SerializationException; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.time.Duration; @@ -56,7 +55,7 @@ public class RedisConfig extends CachingConfigurerSupport { public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate template = new RedisTemplate<>(); //序列化 - FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object.class); + FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer<>(Object.class); // value值的序列化采用fastJsonRedisSerializer template.setValueSerializer(fastJsonRedisSerializer); template.setHashValueSerializer(fastJsonRedisSerializer); @@ -140,7 +139,7 @@ public class RedisConfig extends CachingConfigurerSupport { } @Override - public byte[] serialize(T t) throws SerializationException { + public byte[] serialize(T t) { if (t == null) { return new byte[0]; } @@ -148,7 +147,7 @@ public class RedisConfig extends CachingConfigurerSupport { } @Override - public T deserialize(byte[] bytes) throws SerializationException { + public T deserialize(byte[] bytes) { if (bytes == null || bytes.length <= 0) { return null; } diff --git a/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java index de7dde31..6e6b3ff7 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java @@ -4,6 +4,7 @@ import com.fasterxml.classmate.TypeResolver; import com.google.common.base.Predicates; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -22,7 +23,6 @@ import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.util.ArrayList; import java.util.List; - import static com.google.common.collect.Lists.newArrayList; import static springfox.documentation.schema.AlternateTypeRules.newRule; @@ -43,6 +43,7 @@ public class SwaggerConfig { private Boolean enabled; @Bean + @SuppressWarnings("all") public Docket createRestApi() { ParameterBuilder ticketPar = new ParameterBuilder(); List pars = new ArrayList<>(); @@ -93,7 +94,8 @@ class SwaggerDataConfig { } @ApiModel - static class Page { + @Data + private static class Page { @ApiModelProperty("页码 (0..N)") private Integer page; @@ -102,29 +104,5 @@ class SwaggerDataConfig { @ApiModelProperty("以下列格式排序标准:property[,asc | desc]。 默认排序顺序为升序。 支持多种排序条件:如:id,asc") private List sort; - - public Integer getPage() { - return page; - } - - public void setPage(Integer page) { - this.page = page; - } - - public Integer getSize() { - return size; - } - - public void setSize(Integer size) { - this.size = size; - } - - public List getSort() { - return sort; - } - - public void setSort(List sort) { - this.sort = sort; - } } } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java index d440bcb9..264fee0e 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java @@ -4,11 +4,11 @@ import cn.hutool.core.io.resource.ClassPathResource; import org.lionsoul.ip2region.DataBlock; import org.lionsoul.ip2region.DbConfig; import org.lionsoul.ip2region.DbSearcher; - import javax.servlet.http.HttpServletRequest; import java.io.File; -import java.io.UnsupportedEncodingException; import java.lang.reflect.Method; +import java.net.InetAddress; +import java.net.UnknownHostException; import java.util.Calendar; import java.util.Date; @@ -109,17 +109,27 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { */ public static String getIp(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); - if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } - if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(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)) { + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } - String[] ips = ip.split(","); - return "0:0:0:0:0:0:0:1".equals(ips[0])?"127.0.0.1":ips[0]; + if (ip.contains(",")) { + ip = ip.split(",")[0]; + } + if ("127.0.0.1".equals(ip)) { + // 获取本机真正的ip地址 + try { + ip = InetAddress.getLocalHost().getHostAddress(); + } catch (UnknownHostException e) { + e.printStackTrace(); + } + } + return ip; } /** diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java b/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java index e47fca92..67afbbf5 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java @@ -1,10 +1,6 @@ package me.zhengjie.service; import me.zhengjie.domain.GenConfig; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.CachePut; -import org.springframework.cache.annotation.Cacheable; /** * @author Zheng Jie 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 index 1decf842..51198e56 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java @@ -28,6 +28,7 @@ public class GeneratorServiceImpl implements GeneratorService { private EntityManager em; @Override + @SuppressWarnings("all") public Object getTables(String name, int[] startEnd) { // 使用预编译防止sql注入 String sql = "select table_name ,create_time , engine, table_collation, table_comment from information_schema.tables " + @@ -49,6 +50,7 @@ public class GeneratorServiceImpl implements GeneratorService { } @Override + @SuppressWarnings("all") public Object getColumns(String name) { // 使用预编译防止sql注入 String sql = "select column_name, is_nullable, data_type, column_comment, column_key, extra from information_schema.columns " + diff --git a/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java index 989a74c6..9f6d4912 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java +++ b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java @@ -2,7 +2,6 @@ package me.zhengjie.aspect; import lombok.extern.slf4j.Slf4j; import me.zhengjie.domain.Log; -import me.zhengjie.exception.BadRequestException; import me.zhengjie.service.LogService; import me.zhengjie.utils.RequestHolder; import me.zhengjie.utils.SecurityUtils; @@ -14,11 +13,8 @@ import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import javax.servlet.http.HttpServletRequest; - /** * @author Zheng Jie * @date 2018-11-24 @@ -28,11 +24,14 @@ import javax.servlet.http.HttpServletRequest; @Slf4j public class LogAspect { - @Autowired - private LogService logService; + private final LogService logService; private long currentTime = 0L; + public LogAspect(LogService logService) { + this.logService = logService; + } + /** * 配置切入点 */ diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/VisitsInitialization.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/VisitsInitialization.java index 236a9c3c..f27e32e3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/VisitsInitialization.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/VisitsInitialization.java @@ -19,7 +19,7 @@ public class VisitsInitialization implements ApplicationRunner { } @Override - public void run(ApplicationArguments args) throws Exception { + public void run(ApplicationArguments args){ System.out.println("--------------- 初始化站点统计,如果存在今日统计则跳过 ---------------"); visitsService.save(); System.out.println("--------------- 初始化站点统计完成 ---------------"); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/VisitsController.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/VisitsController.java index f8e33423..077ee3d4 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/VisitsController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/VisitsController.java @@ -4,7 +4,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; 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; import org.springframework.web.bind.annotation.GetMapping; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java index 2065dfe9..90fd2fba 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java @@ -1,6 +1,5 @@ package me.zhengjie.modules.monitor.service; -import me.zhengjie.modules.monitor.domain.vo.RedisVo; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java index 56216a1e..8faa1500 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java @@ -1,6 +1,7 @@ package me.zhengjie.modules.quartz.domain; -import lombok.Data; +import lombok.Getter; +import lombok.Setter; import me.zhengjie.base.BaseEntity; import javax.persistence.*; import javax.validation.constraints.NotBlank; @@ -10,7 +11,8 @@ import javax.validation.constraints.NotNull; * @author Zheng Jie * @date 2019-01-07 */ -@Data +@Getter +@Setter @Entity @Table(name = "quartz_job") public class QuartzJob extends BaseEntity { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java index 680e9f1d..025edd90 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java @@ -1,7 +1,6 @@ package me.zhengjie.modules.quartz.task; import lombok.extern.slf4j.Slf4j; -import me.zhengjie.exception.BadRequestException; import org.springframework.stereotype.Component; /** @@ -12,7 +11,7 @@ import org.springframework.stereotype.Component; @Slf4j @Component public class TestTask { - + public void run(){ log.info("执行成功"); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java index 31209f0a..eb442381 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java @@ -29,6 +29,7 @@ public class ExecutionJob extends QuartzJobBean { private ExecutorService executorService = Executors.newSingleThreadExecutor(); @Override + @SuppressWarnings("unchecked") protected void executeInternal(JobExecutionContext context) { QuartzJob quartzJob = (QuartzJob) context.getMergedJobDataMap().get(QuartzJob.JOB_KEY); // 获取spring bean diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java index 1b392aa8..303b364b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java @@ -1,7 +1,6 @@ package me.zhengjie.modules.system.domain; import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.Data; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseEntity; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java index d9c6ca1d..567b7beb 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java @@ -1,14 +1,11 @@ package me.zhengjie.modules.system.domain; -import lombok.Data; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseEntity; - import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; -import java.io.Serializable; import java.util.List; /** diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java index 48e52c00..524491b7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java @@ -1,13 +1,10 @@ package me.zhengjie.modules.system.domain; -import lombok.Data; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseEntity; - import javax.persistence.*; import javax.validation.constraints.NotNull; -import java.io.Serializable; /** * @author Zheng Jie diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java index e6f6b82c..a70347b3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java @@ -1,17 +1,13 @@ package me.zhengjie.modules.system.domain; -import lombok.Data; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseEntity; -import org.hibernate.annotations.*; import javax.persistence.*; import javax.persistence.Entity; import javax.persistence.Table; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; -import java.sql.Timestamp; -import java.io.Serializable; /** * @author Zheng Jie diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java index 20ab89ca..b9fb2292 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java @@ -4,12 +4,9 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseEntity; -import org.hibernate.annotations.CreationTimestamp; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; -import java.io.Serializable; -import java.sql.Timestamp; import java.util.Objects; import java.util.Set; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java index d0305a4d..e6f252be 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java @@ -4,12 +4,9 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseEntity; -import org.hibernate.annotations.CreationTimestamp; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; -import java.io.Serializable; -import java.sql.Timestamp; import java.util.Set; /** diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java index 39e93114..8690c889 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java @@ -4,12 +4,9 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseEntity; -import org.hibernate.annotations.CreationTimestamp; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; -import java.io.Serializable; -import java.sql.Timestamp; import java.util.Objects; import java.util.Set; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java index 9eef82dd..0e0c89a8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java @@ -34,7 +34,7 @@ public class User extends BaseEntity { private UserAvatar userAvatar; @NotBlank - @Pattern(regexp = "([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}",message = "格式错误") + @Pattern(regexp = "([a-z0-9A-Z]+[-|.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}",message = "格式错误") private String email; @NotBlank diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/UserAvatar.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/UserAvatar.java index f7470d10..c0d1997f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/UserAvatar.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/UserAvatar.java @@ -1,14 +1,11 @@ package me.zhengjie.modules.system.domain; import cn.hutool.core.util.ObjectUtil; -import lombok.Data; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import me.zhengjie.base.BaseEntity; - import javax.persistence.*; -import java.sql.Timestamp; /** * @author Zheng Jie diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java index cd60339d..c2a8b28a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java @@ -7,7 +7,6 @@ import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.system.domain.Dict; import me.zhengjie.modules.system.service.DictService; import me.zhengjie.modules.system.service.dto.DictQueryCriteria; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java index 02e78ffa..20214aac 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java @@ -7,7 +7,6 @@ import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.system.domain.DictDetail; import me.zhengjie.modules.system.service.DictDetailService; import me.zhengjie.modules.system.service.dto.DictDetailQueryCriteria; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.web.PageableDefault; @@ -16,11 +15,8 @@ import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; - -import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import java.util.stream.Collectors; /** * @author Zheng Jie @@ -43,8 +39,7 @@ public class DictDetailController { @ApiOperation("查询字典详情") @GetMapping public ResponseEntity getDictDetails(DictDetailQueryCriteria criteria, - @PageableDefault(value = 10, sort = {"sort"}, direction = Sort.Direction.ASC) Pageable pageable){ - String[] names = criteria.getDictName().split(","); + @PageableDefault(sort = {"sort"}, direction = Sort.Direction.ASC) Pageable pageable){ return new ResponseEntity<>(dictDetailService.queryAll(criteria,pageable),HttpStatus.OK); } @@ -52,7 +47,7 @@ public class DictDetailController { @ApiOperation("查询多个字典详情") @GetMapping(value = "/map") public ResponseEntity getDictDetailMaps(DictDetailQueryCriteria criteria, - @PageableDefault(value = 10, sort = {"sort"}, direction = Sort.Direction.ASC) Pageable pageable){ + @PageableDefault(sort = {"sort"}, direction = Sort.Direction.ASC) Pageable pageable){ String[] names = criteria.getDictName().split(","); Map map = new HashMap<>(names.length); for (String name : names) { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java index 1f455aaa..6b1ba897 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java @@ -9,7 +9,6 @@ import me.zhengjie.modules.system.domain.Job; import me.zhengjie.modules.system.service.JobService; import me.zhengjie.modules.system.service.dto.JobQueryCriteria; import me.zhengjie.utils.ThrowableUtil; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -17,8 +16,6 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.util.Set; - /** * @author Zheng Jie * @date 2019-03-29 diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java index 03ce9ed5..e5070a1b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java @@ -28,6 +28,7 @@ import java.util.Set; @Api(tags = "系统:菜单管理") @RestController @RequestMapping("/api/menus") +@SuppressWarnings("unchecked") public class MenuController { private final MenuService menuService; @@ -49,7 +50,8 @@ public class MenuController { public ResponseEntity buildMenus(){ UserDTO user = userService.findByName(SecurityUtils.getUsername()); List menuDTOList = menuService.findByRoles(roleService.findByUsers_Id(user.getId())); - return new ResponseEntity<>(menuService.buildMenus((List) menuService.buildTree(menuDTOList).get("content")),HttpStatus.OK); + List menuDTOS = (List) menuService.buildTree(menuDTOList).get("content"); + return new ResponseEntity<>(menuService.buildMenus(menuDTOS),HttpStatus.OK); } @ApiOperation("返回全部的菜单") diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleSmallDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleSmallDTO.java index 7e9d9fc1..1a6c7a04 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleSmallDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleSmallDTO.java @@ -1,10 +1,7 @@ package me.zhengjie.modules.system.service.dto; import lombok.Data; - import java.io.Serializable; -import java.sql.Timestamp; -import java.util.Set; /** * @author Zheng Jie diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java index a977dfe1..1374202f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java @@ -17,9 +17,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; - import java.util.Map; -import java.util.Optional; /** * @author Zheng Jie diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java b/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java index 20b1ada5..3d1b7a06 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java @@ -22,7 +22,7 @@ public class QiniuContent implements Serializable { private Long id; // 文件名 - @Column(name = "name",unique = false) + @Column(name = "name") private String key; // 空间名 diff --git a/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java index 60bdc609..59c66945 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java @@ -10,7 +10,5 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; */ public interface PictureRepository extends JpaRepository, JpaSpecificationExecutor { - Picture findByUrl(String url); - Picture findByMd5Code(String code); } diff --git a/eladmin-tools/src/main/java/me/zhengjie/repository/VerificationCodeRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/VerificationCodeRepository.java index 9085d928..c602a45e 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/repository/VerificationCodeRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/VerificationCodeRepository.java @@ -12,9 +12,9 @@ public interface VerificationCodeRepository extends JpaRepository { } \ No newline at end of file From e245296c7ed50829288c985ac69e08fe116e23ee Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Sat, 26 Oct 2019 19:56:59 +0800 Subject: [PATCH 07/25] =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E5=99=A8=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eladmin-common/pom.xml | 1 - .../java/me/zhengjie/utils/StringUtils.java | 8 ++++ .../java/me/zhengjie/aspect/LogAspect.java | 8 +++- .../src/main/java/me/zhengjie/domain/Log.java | 2 + .../java/me/zhengjie/service/LogService.java | 2 +- .../me/zhengjie/service/dto/LogErrorDTO.java | 2 + .../me/zhengjie/service/dto/LogSmallDTO.java | 2 + .../zhengjie/service/impl/LogServiceImpl.java | 3 +- .../modules/monitor/domain/vo/OnlineUser.java | 24 ++++++++++++ .../rest/AuthenticationController.java | 8 ++-- ...{AuthenticationInfo.java => AuthInfo.java} | 38 +++++++++---------- .../{AuthorizationUser.java => AuthUser.java} | 2 +- .../security/JwtAuthorizationTokenFilter.java | 1 - pom.xml | 5 +++ 14 files changed, 76 insertions(+), 30 deletions(-) create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/vo/OnlineUser.java rename eladmin-system/src/main/java/me/zhengjie/modules/security/security/{AuthenticationInfo.java => AuthInfo.java} (79%) rename eladmin-system/src/main/java/me/zhengjie/modules/security/security/{AuthorizationUser.java => AuthUser.java} (93%) diff --git a/eladmin-common/pom.xml b/eladmin-common/pom.xml index af94c4df..3424108f 100644 --- a/eladmin-common/pom.xml +++ b/eladmin-common/pom.xml @@ -11,5 +11,4 @@ eladmin-common 公共模块 - \ No newline at end of file diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java index 264fee0e..8f865f2e 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java @@ -1,6 +1,8 @@ package me.zhengjie.utils; import cn.hutool.core.io.resource.ClassPathResource; +import eu.bitwalker.useragentutils.Browser; +import eu.bitwalker.useragentutils.UserAgent; import org.lionsoul.ip2region.DataBlock; import org.lionsoul.ip2region.DbConfig; import org.lionsoul.ip2region.DbSearcher; @@ -157,6 +159,12 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { return ""; } + public static String getBrowser(HttpServletRequest request){ + UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("User-Agent")); + Browser browser = userAgent.getBrowser(); + return browser.getName(); + } + /** * 获得当天是周几 */ diff --git a/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java index 9f6d4912..a212ddf4 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java +++ b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java @@ -15,6 +15,8 @@ import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component; +import javax.servlet.http.HttpServletRequest; + /** * @author Zheng Jie * @date 2018-11-24 @@ -51,7 +53,8 @@ public class LogAspect { currentTime = System.currentTimeMillis(); result = joinPoint.proceed(); Log log = new Log("INFO",System.currentTimeMillis() - currentTime); - logService.save(getUsername(), StringUtils.getIp(RequestHolder.getHttpServletRequest()),joinPoint, log); + HttpServletRequest request = RequestHolder.getHttpServletRequest(); + logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request),joinPoint, log); return result; } @@ -65,7 +68,8 @@ public class LogAspect { public void logAfterThrowing(JoinPoint joinPoint, Throwable e) { Log log = new Log("ERROR",System.currentTimeMillis() - currentTime); log.setExceptionDetail(ThrowableUtil.getStackTrace(e).getBytes()); - logService.save(getUsername(), StringUtils.getIp(RequestHolder.getHttpServletRequest()), (ProceedingJoinPoint)joinPoint, log); + HttpServletRequest request = RequestHolder.getHttpServletRequest(); + logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request), (ProceedingJoinPoint)joinPoint, log); } public String getUsername() { diff --git a/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java b/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java index 564ab941..a977fee9 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java +++ b/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java @@ -45,6 +45,8 @@ public class Log implements Serializable { @Column(name = "address") private String address; + private String browser; + // 请求耗时 private Long time; diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java b/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java index b5e52732..7c05812c 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java @@ -17,7 +17,7 @@ public interface LogService { Object queryAllByUser(LogQueryCriteria criteria, Pageable pageable); @Async - void save(String username, String ip, ProceedingJoinPoint joinPoint, Log log); + void save(String username, String browser, String ip, ProceedingJoinPoint joinPoint, Log log); /** * 查询异常详情 diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogErrorDTO.java b/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogErrorDTO.java index 7aaa54b2..1548ef00 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogErrorDTO.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogErrorDTO.java @@ -25,6 +25,8 @@ public class LogErrorDTO implements Serializable { // 参数 private String params; + private String browser; + // 请求ip private String requestIp; diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogSmallDTO.java b/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogSmallDTO.java index 5d11c347..22e41fb2 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogSmallDTO.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogSmallDTO.java @@ -22,6 +22,8 @@ public class LogSmallDTO implements Serializable { private String address; + private String browser; + // 创建日期 private Timestamp createTime; } diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java b/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java index 66bff12f..8a1158c6 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java @@ -57,7 +57,7 @@ public class LogServiceImpl implements LogService { @Override @Transactional(rollbackFor = Exception.class) - public void save(String username, String ip, ProceedingJoinPoint joinPoint, Log log){ + public void save(String username, String browser, String ip, ProceedingJoinPoint joinPoint, Log log){ MethodSignature signature = (MethodSignature) joinPoint.getSignature(); Method method = signature.getMethod(); @@ -96,6 +96,7 @@ public class LogServiceImpl implements LogService { log.setMethod(methodName); log.setUsername(username); log.setParams(params.toString() + " }"); + log.setBrowser(browser); logRepository.save(log); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/vo/OnlineUser.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/vo/OnlineUser.java new file mode 100644 index 00000000..ae4fb2ca --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/vo/OnlineUser.java @@ -0,0 +1,24 @@ +package me.zhengjie.modules.monitor.domain.vo; + +import lombok.Data; +import java.sql.Timestamp; +import java.util.Date; + +/** + * @author Zheng Jie + */ +@Data +public class OnlineUser { + + private String userName; + + private String browser; + + private String ip; + + private String address; + + private Date createTime; + + private Date lastAccessTime; +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java index d27e1fd5..b62329c2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java @@ -8,8 +8,8 @@ import lombok.extern.slf4j.Slf4j; import me.zhengjie.aop.log.Log; import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.monitor.service.RedisService; -import me.zhengjie.modules.security.security.AuthenticationInfo; -import me.zhengjie.modules.security.security.AuthorizationUser; +import me.zhengjie.modules.security.security.AuthInfo; +import me.zhengjie.modules.security.security.AuthUser; import me.zhengjie.modules.security.security.ImgResult; import me.zhengjie.modules.security.security.JwtUser; import me.zhengjie.utils.EncryptUtils; @@ -53,7 +53,7 @@ public class AuthenticationController { @Log("用户登录") @ApiOperation("登录授权") @PostMapping(value = "/login") - public ResponseEntity login(@Validated @RequestBody AuthorizationUser authorizationUser){ + public ResponseEntity login(@Validated @RequestBody AuthUser authorizationUser){ // 查询验证码 String code = redisService.getCodeVal(authorizationUser.getUuid()); @@ -79,7 +79,7 @@ public class AuthenticationController { final String token = jwtTokenUtil.generateToken(jwtUser); // 返回 token - return ResponseEntity.ok(new AuthenticationInfo(token,jwtUser)); + return ResponseEntity.ok(new AuthInfo(token,jwtUser)); } @ApiOperation("获取用户信息") diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthenticationInfo.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthInfo.java similarity index 79% rename from eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthenticationInfo.java rename to eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthInfo.java index 65fa7232..94bb2ab6 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthenticationInfo.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthInfo.java @@ -1,19 +1,19 @@ -package me.zhengjie.modules.security.security; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import java.io.Serializable; - -/** - * @author Zheng Jie - * @date 2018-11-23 - * 返回token - */ -@Getter -@AllArgsConstructor -public class AuthenticationInfo implements Serializable { - - private final String token; - - private final JwtUser user; -} +package me.zhengjie.modules.security.security; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import java.io.Serializable; + +/** + * @author Zheng Jie + * @date 2018-11-23 + * 返回token + */ +@Getter +@AllArgsConstructor +public class AuthInfo implements Serializable { + + private final String token; + + private final JwtUser user; +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthorizationUser.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthUser.java similarity index 93% rename from eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthorizationUser.java rename to eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthUser.java index 1b93aca5..8c3a9608 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthorizationUser.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthUser.java @@ -11,7 +11,7 @@ import javax.validation.constraints.NotBlank; */ @Getter @Setter -public class AuthorizationUser { +public class AuthUser { @NotBlank private String username; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthorizationTokenFilter.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthorizationTokenFilter.java index 1693bcc1..99a8dbf5 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthorizationTokenFilter.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthorizationTokenFilter.java @@ -7,7 +7,6 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; import org.springframework.stereotype.Component; diff --git a/pom.xml b/pom.xml index 87bd2062..4d91d796 100644 --- a/pom.xml +++ b/pom.xml @@ -200,6 +200,11 @@ easy-captcha 1.6.2 + + eu.bitwalker + UserAgentUtils + 1.20 + From ee33a54f7ff784b04149e7b911205d763020efe2 Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Sat, 26 Oct 2019 23:43:28 +0800 Subject: [PATCH 08/25] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86=EF=BC=8C=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=B3=A8=E9=94=80=E7=99=BB=E5=BD=95=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?token=E4=BA=A4=E4=BA=8Eredis=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/zhengjie/rest/GeneratorController.java | 4 +- .../modules/monitor/domain/vo/OnlineUser.java | 24 ------ .../modules/monitor/rest/RedisController.java | 2 +- .../modules/monitor/service/RedisService.java | 4 +- .../service/impl/RedisServiceImpl.java | 22 ++--- .../security/config/SecurityConfig.java | 28 +++--- .../rest/AuthenticationController.java | 25 ++++-- .../security/rest/OnlineController.java | 37 ++++++++ .../security/JwtAuthorizationTokenFilter.java | 37 ++++---- .../modules/security/security/OnlineUser.java | 32 +++++++ .../security/service/OnlineUserService.java | 85 +++++++++++++++++++ .../modules/security/utils/JwtTokenUtil.java | 10 +++ .../main/resources/config/application-dev.yml | 6 +- .../resources/config/application-prod.yml | 2 + 14 files changed, 234 insertions(+), 84 deletions(-) delete mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/vo/OnlineUser.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/security/rest/OnlineController.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/security/security/OnlineUser.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java diff --git a/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java b/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java index 3e10323f..653489e2 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java +++ b/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java @@ -37,8 +37,8 @@ public class GeneratorController { @ApiOperation("查询数据库元数据") @GetMapping(value = "/tables") public ResponseEntity getTables(@RequestParam(defaultValue = "") String name, - @RequestParam(defaultValue = "0")Integer page, - @RequestParam(defaultValue = "10")Integer size){ + @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); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/vo/OnlineUser.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/vo/OnlineUser.java deleted file mode 100644 index ae4fb2ca..00000000 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/vo/OnlineUser.java +++ /dev/null @@ -1,24 +0,0 @@ -package me.zhengjie.modules.monitor.domain.vo; - -import lombok.Data; -import java.sql.Timestamp; -import java.util.Date; - -/** - * @author Zheng Jie - */ -@Data -public class OnlineUser { - - private String userName; - - private String browser; - - private String ip; - - private String address; - - private Date createTime; - - private Date lastAccessTime; -} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java index 724cb27f..4b0fa348 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java @@ -48,7 +48,7 @@ public class RedisController { @ApiOperation("清空Redis缓存") @PreAuthorize("hasAnyRole('ADMIN','REDIS_ALL','REDIS_DELETE')") public ResponseEntity deleteAll(){ - redisService.flushdb(); + redisService.deleteAll(); return new ResponseEntity(HttpStatus.OK); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java index 90fd2fba..77965563 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java @@ -38,7 +38,7 @@ public interface RedisService { void delete(String key); /** - * 清空所有缓存 + * 清空缓存 */ - void flushdb(); + void deleteAll(); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java index 2f225958..93431834 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java @@ -9,16 +9,17 @@ import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; + +import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * @author Zheng Jie * @date 2018-12-10 */ @Service +@SuppressWarnings({"unchecked","all"}) public class RedisServiceImpl implements RedisService { private final RedisTemplate redisTemplate; @@ -31,18 +32,18 @@ public class RedisServiceImpl implements RedisService { } @Override - @SuppressWarnings("unchecked") public Page findByKey(String key, Pageable pageable){ List redisVos = new ArrayList<>(); if(!"*".equals(key)){ key = "*" + key + "*"; } - for (Object s : Objects.requireNonNull(redisTemplate.keys(key))) { + Set keys = redisTemplate.keys(key); + for (String s : keys) { // 过滤掉权限的缓存 - if (s.toString().contains("role::loadPermissionByUser") || s.toString().contains("user::loadUserByUsername")) { + if (s.contains("role::loadPermissionByUser") || s.contains("user::loadUserByUsername") || s.contains("online:token")) { continue; } - RedisVo redisVo = new RedisVo(s.toString(), Objects.requireNonNull(redisTemplate.opsForValue().get(s.toString())).toString()); + RedisVo redisVo = new RedisVo(s, Objects.requireNonNull(redisTemplate.opsForValue().get(s)).toString()); redisVos.add(redisVo); } return new PageImpl( @@ -52,14 +53,14 @@ public class RedisServiceImpl implements RedisService { } @Override - @SuppressWarnings("unchecked") public void delete(String key) { redisTemplate.delete(key); } @Override - public void flushdb() { - Objects.requireNonNull(redisTemplate.getConnectionFactory()).getConnection().flushDb(); + public void deleteAll() { + Set keys = redisTemplate.keys( "*"); + redisTemplate.delete(keys.stream().filter(s -> !s.contains("online:token")).collect(Collectors.toList())); } @Override @@ -72,7 +73,6 @@ public class RedisServiceImpl implements RedisService { } @Override - @SuppressWarnings("unchecked") public void saveCode(String key, Object val) { redisTemplate.opsForValue().set(key,val); redisTemplate.expire(key,expiration, TimeUnit.MINUTES); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java index ff0f3552..000defb3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java @@ -89,34 +89,34 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { "/**/*.js" ).anonymous() - .antMatchers(HttpMethod.POST,"/auth/login").anonymous() - .antMatchers(HttpMethod.GET,"/auth/code").anonymous() + .antMatchers(HttpMethod.POST,"/auth/login").permitAll() + .antMatchers(HttpMethod.DELETE,"/auth/logout").permitAll() + .antMatchers(HttpMethod.GET,"/auth/code").permitAll() // 支付宝回调 - .antMatchers("/api/aliPay/return").anonymous() - .antMatchers("/api/aliPay/notify").anonymous() + .antMatchers("/api/aliPay/return").permitAll() + .antMatchers("/api/aliPay/notify").permitAll() // swagger start - .antMatchers("/swagger-ui.html").anonymous() - .antMatchers("/swagger-resources/**").anonymous() - .antMatchers("/webjars/**").anonymous() - .antMatchers("/*/api-docs").anonymous() + .antMatchers("/swagger-ui.html").permitAll() + .antMatchers("/swagger-resources/**").permitAll() + .antMatchers("/webjars/**").permitAll() + .antMatchers("/*/api-docs").permitAll() // swagger end // 接口限流测试 - .antMatchers("/test/**").anonymous() + .antMatchers("/test/**").permitAll() // 文件 - .antMatchers("/avatar/**").anonymous() - .antMatchers("/file/**").anonymous() + .antMatchers("/avatar/**").permitAll() + .antMatchers("/file/**").permitAll() // 放行OPTIONS请求 - .antMatchers(HttpMethod.OPTIONS, "/**").anonymous() + .antMatchers(HttpMethod.OPTIONS, "/**").permitAll() - .antMatchers("/druid/**").anonymous() + .antMatchers("/druid/**").permitAll() // 所有请求都需要认证 .anyRequest().authenticated() // 防止iframe 造成跨域 .and().headers().frameOptions().disable(); - httpSecurity .addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java index b62329c2..0c4a243c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java @@ -12,17 +12,19 @@ import me.zhengjie.modules.security.security.AuthInfo; import me.zhengjie.modules.security.security.AuthUser; import me.zhengjie.modules.security.security.ImgResult; import me.zhengjie.modules.security.security.JwtUser; +import me.zhengjie.modules.security.service.OnlineUserService; import me.zhengjie.utils.EncryptUtils; import me.zhengjie.modules.security.utils.JwtTokenUtil; import me.zhengjie.utils.SecurityUtils; import me.zhengjie.utils.StringUtils; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.authentication.AccountExpiredException; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; /** * @author Zheng Jie @@ -35,25 +37,25 @@ import org.springframework.web.bind.annotation.*; @Api(tags = "系统:系统授权接口") public class AuthenticationController { - @Value("${jwt.header}") - private String tokenHeader; - private final JwtTokenUtil jwtTokenUtil; private final RedisService redisService; private final UserDetailsService userDetailsService; - public AuthenticationController(JwtTokenUtil jwtTokenUtil, RedisService redisService, @Qualifier("jwtUserDetailsService") UserDetailsService userDetailsService) { + private final OnlineUserService onlineUserService; + + public AuthenticationController(JwtTokenUtil jwtTokenUtil, RedisService redisService, @Qualifier("jwtUserDetailsService") UserDetailsService userDetailsService, OnlineUserService onlineUserService) { this.jwtTokenUtil = jwtTokenUtil; this.redisService = redisService; this.userDetailsService = userDetailsService; + this.onlineUserService = onlineUserService; } @Log("用户登录") @ApiOperation("登录授权") @PostMapping(value = "/login") - public ResponseEntity login(@Validated @RequestBody AuthUser authorizationUser){ + public ResponseEntity login(@Validated @RequestBody AuthUser authorizationUser, HttpServletRequest request){ // 查询验证码 String code = redisService.getCodeVal(authorizationUser.getUuid()); @@ -74,10 +76,10 @@ public class AuthenticationController { if(!jwtUser.isEnabled()){ throw new AccountExpiredException("账号已停用,请联系管理员"); } - // 生成令牌 final String token = jwtTokenUtil.generateToken(jwtUser); - + // 保存在线信息 + onlineUserService.save(jwtUser, token, request); // 返回 token return ResponseEntity.ok(new AuthInfo(token,jwtUser)); } @@ -102,4 +104,11 @@ public class AuthenticationController { redisService.saveCode(uuid,result); return new ImgResult(captcha.toBase64(),uuid); } + + @ApiOperation("退出登录") + @DeleteMapping(value = "/logout") + public ResponseEntity logout(HttpServletRequest request){ + onlineUserService.logout(jwtTokenUtil.getToken(request)); + return new ResponseEntity(HttpStatus.OK); + } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/OnlineController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/OnlineController.java new file mode 100644 index 00000000..5d69bf2f --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/OnlineController.java @@ -0,0 +1,37 @@ +package me.zhengjie.modules.security.rest; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import me.zhengjie.modules.security.service.OnlineUserService; +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.*; + +@RestController +@RequestMapping("/auth/online") +@Api(tags = "系统:在线用户管理") +public class OnlineController { + + private final OnlineUserService onlineUserService; + + public OnlineController(OnlineUserService onlineUserService) { + this.onlineUserService = onlineUserService; + } + + @ApiOperation("查询在线用户") + @GetMapping + @PreAuthorize("hasRole('ADMIN')") + public ResponseEntity getAll(String filter, Pageable pageable){ + return new ResponseEntity<>(onlineUserService.getAll(filter, pageable),HttpStatus.OK); + } + + @ApiOperation("踢出用户") + @DeleteMapping(value = "/{key}") + @PreAuthorize("hasRole('ADMIN')") + public ResponseEntity delete(@PathVariable String key) throws Exception { + onlineUserService.kickOut(key); + return new ResponseEntity(HttpStatus.OK); + } +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthorizationTokenFilter.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthorizationTokenFilter.java index 99a8dbf5..c1e57b12 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthorizationTokenFilter.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthorizationTokenFilter.java @@ -3,8 +3,10 @@ package me.zhengjie.modules.security.security; import io.jsonwebtoken.ExpiredJwtException; import lombok.extern.slf4j.Slf4j; import me.zhengjie.modules.security.utils.JwtTokenUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetailsService; @@ -21,38 +23,33 @@ import java.io.IOException; @Component public class JwtAuthorizationTokenFilter extends OncePerRequestFilter { + + @Value("${jwt.online}") + private String onlineKey; + private final UserDetailsService userDetailsService; private final JwtTokenUtil jwtTokenUtil; - private final String tokenHeader; + private final RedisTemplate redisTemplate; - public JwtAuthorizationTokenFilter(@Qualifier("jwtUserDetailsService") UserDetailsService userDetailsService, JwtTokenUtil jwtTokenUtil, @Value("${jwt.header}") String tokenHeader) { + public JwtAuthorizationTokenFilter(@Qualifier("jwtUserDetailsService") UserDetailsService userDetailsService, JwtTokenUtil jwtTokenUtil, RedisTemplate redisTemplate) { this.userDetailsService = userDetailsService; this.jwtTokenUtil = jwtTokenUtil; - this.tokenHeader = tokenHeader; + this.redisTemplate = redisTemplate; } @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException { - - final String requestHeader = request.getHeader(this.tokenHeader); - - String username = null; - String authToken = null; - if (requestHeader != null && requestHeader.startsWith("Bearer ")) { - authToken = requestHeader.substring(7); - try { - username = jwtTokenUtil.getUsernameFromToken(authToken); - } catch (ExpiredJwtException e) { - log.error(e.getMessage()); - } + String authToken = jwtTokenUtil.getToken(request); + OnlineUser onlineUser = null; + try { + onlineUser = (OnlineUser)redisTemplate.opsForValue().get(onlineKey + authToken); + } catch (ExpiredJwtException e) { + log.error(e.getMessage()); } - - if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) { - + if (onlineUser != null && SecurityContextHolder.getContext().getAuthentication() == null) { // 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 ;) - JwtUser userDetails = (JwtUser)this.userDetailsService.loadUserByUsername(username); - + JwtUser userDetails = (JwtUser)this.userDetailsService.loadUserByUsername(onlineUser.getUserName()); // For simple validation it is completely sufficient to just check the token integrity. You don't have to call // the database compellingly. Again it's up to you ;) if (jwtTokenUtil.validateToken(authToken, userDetails)) { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/OnlineUser.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/OnlineUser.java new file mode 100644 index 00000000..d0bb036c --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/OnlineUser.java @@ -0,0 +1,32 @@ +package me.zhengjie.modules.security.security; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @author Zheng Jie + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class OnlineUser { + + private String userName; + + private String job; + + private String browser; + + private String ip; + + private String address; + + private String key; + + private Date loginTime; + + +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java new file mode 100644 index 00000000..d37d3797 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java @@ -0,0 +1,85 @@ +package me.zhengjie.modules.security.service; + +import me.zhengjie.modules.security.security.JwtUser; +import me.zhengjie.modules.security.security.OnlineUser; +import me.zhengjie.utils.EncryptUtils; +import me.zhengjie.utils.PageUtil; +import me.zhengjie.utils.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletRequest; +import java.util.*; +import java.util.concurrent.TimeUnit; + +/** + * @author Zheng Jie + * @Date 2019年10月26日21:56:27 + */ +@Service +@SuppressWarnings({"unchecked","all"}) +public class OnlineUserService { + + @Value("${jwt.expiration}") + private Long expiration; + + @Value("${jwt.online}") + private String onlineKey; + + private final RedisTemplate redisTemplate; + + public OnlineUserService(RedisTemplate redisTemplate) { + this.redisTemplate = redisTemplate; + } + + public void save(JwtUser jwtUser, String token, HttpServletRequest request){ + String job = jwtUser.getDept() + "/" + jwtUser.getJob(); + String ip = StringUtils.getIp(request); + String browser = StringUtils.getBrowser(request); + String address = StringUtils.getCityInfo(ip); + OnlineUser onlineUser = null; + try { + onlineUser = new OnlineUser(jwtUser.getUsername(), job, browser , ip, address, EncryptUtils.desEncrypt(token), new Date()); + } catch (Exception e) { + e.printStackTrace(); + } + redisTemplate.opsForValue().set(onlineKey + token, onlineUser); + redisTemplate.expire(onlineKey + token,expiration, TimeUnit.MILLISECONDS); + } + + public Page getAll(String filter, Pageable pageable){ + List keys = new ArrayList<>(redisTemplate.keys(onlineKey + "*")); + Collections.reverse(keys); + List onlineUsers = new ArrayList<>(); + for (String key : keys) { + OnlineUser onlineUser = (OnlineUser) redisTemplate.opsForValue().get(key); + if(StringUtils.isNotBlank(filter)){ + if(onlineUser.toString().contains(filter)){ + onlineUsers.add(onlineUser); + } + } else { + onlineUsers.add(onlineUser); + } + } + Collections.sort(onlineUsers, (o1, o2) -> { + return o2.getLoginTime().compareTo(o1.getLoginTime()); + }); + return new PageImpl( + PageUtil.toPage(pageable.getPageNumber(),pageable.getPageSize(),onlineUsers), + pageable, + keys.size()); + } + + public void kickOut(String val) throws Exception { + String key = onlineKey + EncryptUtils.desDecrypt(val); + redisTemplate.delete(key); + } + + public void logout(String token) { + String key = onlineKey + token; + redisTemplate.delete(key); + } +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/JwtTokenUtil.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/JwtTokenUtil.java index dd2734a3..8a0f2fa1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/JwtTokenUtil.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/JwtTokenUtil.java @@ -6,6 +6,8 @@ import me.zhengjie.modules.security.security.JwtUser; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; import java.io.Serializable; import java.util.Date; import java.util.HashMap; @@ -103,6 +105,14 @@ public class JwtTokenUtil implements Serializable { .compact(); } + public String getToken(HttpServletRequest request){ + final String requestHeader = request.getHeader(tokenHeader); + if (requestHeader != null && requestHeader.startsWith("Bearer ")) { + return requestHeader.substring(7); + } + return null; + } + public Boolean validateToken(String token, UserDetails userDetails) { JwtUser user = (JwtUser) userDetails; final Date created = getIssuedAtDateFromToken(token); diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index 45635db2..8ed43b28 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -45,8 +45,10 @@ spring: jwt: header: Authorization secret: mySecret - # token 过期时间 6个小时 - expiration: 21000000 + # token 过期时间/毫秒,6小时 1小时 = 3600000 毫秒 + expiration: 21600000 + # 在线用户key + online: online-token #是否允许生成代码,生产环境设置为false generator: diff --git a/eladmin-system/src/main/resources/config/application-prod.yml b/eladmin-system/src/main/resources/config/application-prod.yml index 04ff30c8..7c718aa3 100644 --- a/eladmin-system/src/main/resources/config/application-prod.yml +++ b/eladmin-system/src/main/resources/config/application-prod.yml @@ -49,6 +49,8 @@ jwt: secret: mySecret # token 过期时间 2个小时 expiration: 7200000 + # 在线用户key + online: online-token #是否允许生成代码,生产环境设置为false generator: From 43c09d150ddaaea73c366598c2240aca46be55af Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Sat, 26 Oct 2019 23:47:03 +0800 Subject: [PATCH 09/25] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86=EF=BC=8C=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=B3=A8=E9=94=80=E7=99=BB=E5=BD=95=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?token=E4=BA=A4=E4=BA=8Eredis=E7=AE=A1=E7=90=86=EF=BC=8C?= =?UTF-8?q?=E6=9B=B4=E6=96=B0sql=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/eladmin.sql | 301 +++++++++++++++++++++++++++--------------------- 1 file changed, 168 insertions(+), 133 deletions(-) diff --git a/sql/eladmin.sql b/sql/eladmin.sql index 90a49841..3d06651d 100644 --- a/sql/eladmin.sql +++ b/sql/eladmin.sql @@ -11,7 +11,7 @@ Target Server Version : 50562 File Encoding : 65001 - Date: 26/09/2019 17:41:39 + Date: 26/10/2019 23:45:00 */ SET NAMES utf8mb4; @@ -51,22 +51,24 @@ CREATE TABLE `dept` ( `pid` bigint(20) NOT NULL COMMENT '上级部门', `create_time` datetime NULL DEFAULT NULL, `enabled` bit(1) NOT NULL, + `is_delete` bit(1) NULL DEFAULT b'0', + `update_time` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of dept -- ---------------------------- -INSERT INTO `dept` VALUES (1, 'eladmin', 0, '2019-03-25 09:14:05', b'1'); -INSERT INTO `dept` VALUES (2, '研发部', 7, '2019-03-25 09:15:32', b'1'); -INSERT INTO `dept` VALUES (5, '运维部', 7, '2019-03-25 09:20:44', b'1'); -INSERT INTO `dept` VALUES (6, '测试部', 8, '2019-03-25 09:52:18', b'1'); -INSERT INTO `dept` VALUES (7, '华南分部', 1, '2019-03-25 11:04:50', b'1'); -INSERT INTO `dept` VALUES (8, '华北分部', 1, '2019-03-25 11:04:53', b'1'); -INSERT INTO `dept` VALUES (9, '财务部', 7, '2019-03-25 11:05:34', b'1'); -INSERT INTO `dept` VALUES (10, '行政部', 8, '2019-03-25 11:05:58', b'1'); -INSERT INTO `dept` VALUES (11, '人事部', 8, '2019-03-25 11:07:58', b'1'); -INSERT INTO `dept` VALUES (12, '市场部', 7, '2019-03-25 11:10:24', b'0'); +INSERT INTO `dept` VALUES (1, 'eladmin', 0, '2019-03-25 09:14:05', b'1', b'0', '2019-10-24 21:03:08'); +INSERT INTO `dept` VALUES (2, '研发部', 7, '2019-03-25 09:15:32', b'1', b'0', '2019-10-24 21:02:16'); +INSERT INTO `dept` VALUES (5, '运维部', 7, '2019-03-25 09:20:44', b'1', b'0', '2019-10-24 21:02:16'); +INSERT INTO `dept` VALUES (6, '测试部', 8, '2019-03-25 09:52:18', b'1', b'0', '2019-10-24 21:02:16'); +INSERT INTO `dept` VALUES (7, '华南分部', 1, '2019-03-25 11:04:50', b'1', b'0', '2019-10-24 21:02:16'); +INSERT INTO `dept` VALUES (8, '华北分部', 1, '2019-03-25 11:04:53', b'1', b'0', '2019-10-24 21:02:16'); +INSERT INTO `dept` VALUES (9, '财务部', 7, '2019-03-25 11:05:34', b'1', b'0', '2019-10-24 21:02:16'); +INSERT INTO `dept` VALUES (10, '行政部', 8, '2019-03-25 11:05:58', b'1', b'0', '2019-10-24 21:02:16'); +INSERT INTO `dept` VALUES (11, '人事部', 8, '2019-03-25 11:07:58', b'1', b'0', '2019-10-24 21:02:16'); +INSERT INTO `dept` VALUES (12, '市场部', 7, '2019-03-25 11:10:24', b'0', b'0', '2019-10-24 21:02:16'); -- ---------------------------- -- Table structure for dict @@ -76,15 +78,18 @@ CREATE TABLE `dict` ( `id` bigint(11) NOT NULL AUTO_INCREMENT, `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 '描述', + `create_time` datetime NULL DEFAULT NULL, + `is_delete` bit(1) NULL DEFAULT b'0', + `update_time` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 7 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; -- ---------------------------- -- Records of dict -- ---------------------------- -INSERT INTO `dict` VALUES (1, 'user_status', '用户状态'); -INSERT INTO `dict` VALUES (4, 'dept_status', '部门状态'); -INSERT INTO `dict` VALUES (5, 'job_status', '岗位状态'); +INSERT INTO `dict` VALUES (1, 'user_status', '用户状态', NULL, b'0', NULL); +INSERT INTO `dict` VALUES (4, 'dept_status', '部门状态', NULL, b'0', NULL); +INSERT INTO `dict` VALUES (5, 'job_status', '岗位状态', NULL, b'0', NULL); -- ---------------------------- -- Table structure for dict_detail @@ -96,20 +101,23 @@ CREATE TABLE `dict_detail` ( `value` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字典值', `sort` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '排序', `dict_id` bigint(11) NULL DEFAULT NULL COMMENT '字典id', + `create_time` datetime NULL DEFAULT NULL, + `is_delete` bit(1) NULL DEFAULT b'0', + `update_time` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `FK5tpkputc6d9nboxojdbgnpmyb`(`dict_id`) USING BTREE, CONSTRAINT `FK5tpkputc6d9nboxojdbgnpmyb` FOREIGN KEY (`dict_id`) REFERENCES `dict` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of dict_detail -- ---------------------------- -INSERT INTO `dict_detail` VALUES (1, '激活', 'true', '1', 1); -INSERT INTO `dict_detail` VALUES (2, '锁定', 'false', '2', 1); -INSERT INTO `dict_detail` VALUES (11, '正常', 'true', '1', 4); -INSERT INTO `dict_detail` VALUES (12, '停用', 'false', '2', 4); -INSERT INTO `dict_detail` VALUES (13, '正常', 'true', '1', 5); -INSERT INTO `dict_detail` VALUES (14, '停用', 'false', '2', 5); +INSERT INTO `dict_detail` VALUES (1, '激活', 'true', '1', 1, NULL, b'0', '2019-10-24 21:02:16'); +INSERT INTO `dict_detail` VALUES (2, '锁定', 'false', '2', 1, NULL, b'0', '2019-10-24 21:02:16'); +INSERT INTO `dict_detail` VALUES (11, '正常', 'true', '1', 4, NULL, b'0', '2019-10-24 21:02:16'); +INSERT INTO `dict_detail` VALUES (12, '停用', 'false', '2', 4, NULL, b'0', '2019-10-24 21:02:16'); +INSERT INTO `dict_detail` VALUES (13, '正常', 'true', '1', 5, NULL, b'0', '2019-10-24 21:02:16'); +INSERT INTO `dict_detail` VALUES (14, '停用', 'false', '2', 5, NULL, b'0', '2019-10-24 21:02:16'); -- ---------------------------- -- Table structure for email_config @@ -157,6 +165,8 @@ CREATE TABLE `job` ( `create_time` datetime NULL DEFAULT NULL, `sort` bigint(20) NOT NULL, `dept_id` bigint(20) NULL DEFAULT NULL, + `is_delete` bit(1) NULL DEFAULT b'0', + `update_time` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `FKmvhj0rogastlctflsxf1d6k3i`(`dept_id`) USING BTREE, CONSTRAINT `FKmvhj0rogastlctflsxf1d6k3i` FOREIGN KEY (`dept_id`) REFERENCES `dept` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT @@ -165,12 +175,11 @@ CREATE TABLE `job` ( -- ---------------------------- -- Records of job -- ---------------------------- -INSERT INTO `job` VALUES (2, '董事长秘书', b'1', '2019-03-29 14:01:30', 2, 1); -INSERT INTO `job` VALUES (8, '人事专员', b'1', '2019-03-29 14:52:28', 3, 11); -INSERT INTO `job` VALUES (10, '产品经理', b'0', '2019-03-29 14:55:51', 4, 2); -INSERT INTO `job` VALUES (11, '全栈开发', b'1', '2019-03-31 13:39:30', 6, 2); -INSERT INTO `job` VALUES (12, '软件测试', b'1', '2019-03-31 13:39:43', 5, 2); -INSERT INTO `job` VALUES (19, '董事长', b'1', '2019-03-31 14:58:15', 1, 1); +INSERT INTO `job` VALUES (2, '董事长秘书', b'1', '2019-03-29 14:01:30', 2, 1, b'0', '2019-10-24 21:02:16'); +INSERT INTO `job` VALUES (8, '人事专员', b'1', '2019-03-29 14:52:28', 3, 11, b'0', '2019-10-24 21:02:16'); +INSERT INTO `job` VALUES (10, '产品经理', b'0', '2019-03-29 14:55:51', 4, 2, b'0', '2019-10-24 21:02:16'); +INSERT INTO `job` VALUES (11, '全栈开发', b'1', '2019-03-31 13:39:30', 6, 2, b'0', '2019-10-24 21:02:16'); +INSERT INTO `job` VALUES (12, '软件测试', b'1', '2019-03-31 13:39:43', 5, 2, b'0', '2019-10-24 21:02:16'); -- ---------------------------- -- Table structure for local_storage @@ -187,8 +196,9 @@ CREATE TABLE `local_storage` ( `operate` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作人', `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', `update_time` datetime NULL DEFAULT NULL COMMENT '修改日期', + `is_delete` bit(1) NULL DEFAULT b'0', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 20 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 log @@ -206,8 +216,9 @@ CREATE TABLE `log` ( `time` bigint(20) NULL DEFAULT NULL, `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `browser` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 14269 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 14909 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Table structure for menu @@ -226,45 +237,48 @@ CREATE TABLE `menu` ( `cache` bit(1) NULL DEFAULT b'0', `hidden` bit(1) NULL DEFAULT b'0', `component_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '-', + `is_delete` bit(1) NULL DEFAULT b'0', + `update_time` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `FKqcf9gem97gqa5qjm4d3elcqt5`(`pid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 40 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 42 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', b'0', b'0', NULL); -INSERT INTO `menu` VALUES (2, '2018-12-18 15:14:44', b'0', '用户管理', 'system/user/index', 1, 2, 'peoples', 'user', b'0', b'0', 'User'); -INSERT INTO `menu` VALUES (3, '2018-12-18 15:16:07', b'0', '角色管理', 'system/role/index', 1, 3, 'role', 'role', b'0', b'0', 'Role'); -INSERT INTO `menu` VALUES (4, '2018-12-18 15:16:45', b'0', '权限管理', 'system/permission/index', 1, 4, 'permission', 'permission', b'0', b'0', 'Permission'); -INSERT INTO `menu` VALUES (5, '2018-12-18 15:17:28', b'0', '菜单管理', 'system/menu/index', 1, 5, 'menu', 'menu', b'0', b'0', 'Menu'); -INSERT INTO `menu` VALUES (6, '2018-12-18 15:17:48', b'0', '系统监控', NULL, 0, 10, 'monitor', 'monitor', b'0', b'0', NULL); -INSERT INTO `menu` VALUES (7, '2018-12-18 15:18:26', b'0', '操作日志', 'monitor/log/index', 6, 11, 'log', 'logs', b'1', b'0', 'Log'); -INSERT INTO `menu` VALUES (8, '2018-12-18 15:19:01', b'0', '系统缓存', 'monitor/redis/index', 6, 13, 'redis', 'redis', b'0', b'0', 'Redis'); -INSERT INTO `menu` VALUES (9, '2018-12-18 15:19:34', b'0', 'SQL监控', 'monitor/sql/index', 6, 14, 'sqlMonitor', 'druid', b'0', b'0', 'Sql'); -INSERT INTO `menu` VALUES (10, '2018-12-19 13:38:16', b'0', '组件管理', NULL, 0, 50, 'zujian', 'components', b'0', b'0', NULL); -INSERT INTO `menu` VALUES (11, '2018-12-19 13:38:49', b'0', '图标库', 'components/IconSelect', 10, 51, 'icon', 'icon', b'0', b'0', 'Icons'); -INSERT INTO `menu` VALUES (14, '2018-12-27 10:13:09', b'0', '邮件工具', 'tools/email/index', 36, 24, 'email', 'email', b'0', b'0', 'Email'); -INSERT INTO `menu` VALUES (15, '2018-12-27 11:58:25', b'0', '富文本', 'components/Editor', 10, 52, 'fwb', 'tinymce', b'0', b'0', 'Editor'); -INSERT INTO `menu` VALUES (16, '2018-12-28 09:36:53', b'0', '图床管理', 'tools/picture/index', 36, 25, 'image', 'pictures', b'0', b'0', 'Pictures'); -INSERT INTO `menu` VALUES (17, '2018-12-28 15:09:49', b'1', '项目地址', '', 0, 0, 'github', 'https://github.com/elunez/eladmin', b'0', b'0', NULL); -INSERT INTO `menu` VALUES (18, '2018-12-31 11:12:15', b'0', '存储管理', 'tools/storage/index', 36, 23, 'qiniu', 'storage', b'0', b'0', 'Storage'); -INSERT INTO `menu` VALUES (19, '2018-12-31 14:52:38', b'0', '支付宝工具', 'tools/aliPay/index', 36, 27, 'alipay', 'aliPay', b'0', b'0', 'AliPay'); -INSERT INTO `menu` VALUES (21, '2019-01-04 16:22:03', b'0', '多级菜单', '', 0, 900, 'menu', 'nested', b'0', b'0', NULL); -INSERT INTO `menu` VALUES (22, '2019-01-04 16:23:29', b'0', '二级菜单1', 'nested/menu1/index', 21, 999, 'menu', 'menu1', b'0', b'0', NULL); -INSERT INTO `menu` VALUES (23, '2019-01-04 16:23:57', b'0', '二级菜单2', 'nested/menu2/index', 21, 999, 'menu', 'menu2', b'0', b'0', NULL); -INSERT INTO `menu` VALUES (24, '2019-01-04 16:24:48', b'0', '三级菜单1', 'nested/menu1/menu1-1', 22, 999, 'menu', 'menu1-1', b'0', b'0', NULL); -INSERT INTO `menu` VALUES (27, '2019-01-07 17:27:32', b'0', '三级菜单2', 'nested/menu1/menu1-2', 22, 999, 'menu', 'menu1-2', b'0', b'0', NULL); -INSERT INTO `menu` VALUES (28, '2019-01-07 20:34:40', b'0', '定时任务', 'system/timing/index', 36, 21, 'timing', 'timing', b'0', b'0', 'Timing'); -INSERT INTO `menu` VALUES (30, '2019-01-11 15:45:55', b'0', '代码生成', 'generator/index', 36, 22, 'dev', 'generator', b'0', b'0', 'GeneratorIndex'); -INSERT INTO `menu` VALUES (32, '2019-01-13 13:49:03', b'0', '异常日志', 'monitor/log/errorLog', 6, 12, 'error', 'errorLog', b'0', b'0', 'ErrorLog'); -INSERT INTO `menu` VALUES (33, '2019-03-08 13:46:44', b'0', 'Markdown', 'components/MarkDown', 10, 53, 'markdown', 'markdown', b'0', b'0', 'Markdown'); -INSERT INTO `menu` VALUES (34, '2019-03-08 15:49:40', b'0', 'Yaml编辑器', 'components/YamlEdit', 10, 54, 'dev', 'yaml', b'0', b'0', 'YamlEdit'); -INSERT INTO `menu` VALUES (35, '2019-03-25 09:46:00', b'0', '部门管理', 'system/dept/index', 1, 6, 'dept', 'dept', b'0', b'0', 'Dept'); -INSERT INTO `menu` VALUES (36, '2019-03-29 10:57:35', b'0', '系统工具', '', 0, 20, 'sys-tools', 'sys-tools', b'0', b'0', NULL); -INSERT INTO `menu` VALUES (37, '2019-03-29 13:51:18', b'0', '岗位管理', 'system/job/index', 1, 7, 'Steve-Jobs', 'job', b'0', b'0', 'Job'); -INSERT INTO `menu` VALUES (38, '2019-03-29 19:57:53', b'0', '接口文档', 'tools/swagger/index', 36, 26, 'swagger', 'swagger2', b'0', b'0', 'Swagger'); -INSERT INTO `menu` VALUES (39, '2019-04-10 11:49:04', b'0', '字典管理', 'system/dict/index', 1, 8, 'dictionary', 'dict', b'0', b'0', 'Dict'); +INSERT INTO `menu` VALUES (1, '2018-12-18 15:11:29', b'0', '系统管理', NULL, 0, 1, 'system', 'system', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (2, '2018-12-18 15:14:44', b'0', '用户管理', 'system/user/index', 1, 2, 'peoples', 'user', b'0', b'0', 'User', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (3, '2018-12-18 15:16:07', b'0', '角色管理', 'system/role/index', 1, 3, 'role', 'role', b'0', b'0', 'Role', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (4, '2018-12-18 15:16:45', b'0', '权限管理', 'system/permission/index', 1, 4, 'permission', 'permission', b'0', b'0', 'Permission', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (5, '2018-12-18 15:17:28', b'0', '菜单管理', 'system/menu/index', 1, 5, 'menu', 'menu', b'0', b'0', 'Menu', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (6, '2018-12-18 15:17:48', b'0', '系统监控', NULL, 0, 10, 'monitor', 'monitor', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (7, '2018-12-18 15:18:26', b'0', '操作日志', 'monitor/log/index', 6, 11, 'log', 'logs', b'0', b'0', 'Log', b'0', '2019-10-26 19:17:04'); +INSERT INTO `menu` VALUES (8, '2018-12-18 15:19:01', b'0', '系统缓存', 'monitor/redis/index', 6, 13, 'redis', 'redis', b'0', b'0', 'Redis', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (9, '2018-12-18 15:19:34', b'0', 'SQL监控', 'monitor/sql/index', 6, 14, 'sqlMonitor', 'druid', b'0', b'0', 'Sql', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (10, '2018-12-19 13:38:16', b'0', '组件管理', NULL, 0, 50, 'zujian', 'components', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (11, '2018-12-19 13:38:49', b'0', '图标库', 'components/IconSelect', 10, 51, 'icon', 'icon', b'0', b'0', 'Icons', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (14, '2018-12-27 10:13:09', b'0', '邮件工具', 'tools/email/index', 36, 24, 'email', 'email', b'0', b'0', 'Email', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (15, '2018-12-27 11:58:25', b'0', '富文本', 'components/Editor', 10, 52, 'fwb', 'tinymce', b'0', b'0', 'Editor', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (16, '2018-12-28 09:36:53', b'0', '图床管理', 'tools/picture/index', 36, 25, 'image', 'pictures', b'0', b'0', 'Pictures', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (17, '2018-12-28 15:09:49', b'1', '项目地址', '', 0, 0, 'github', 'https://github.com/elunez/eladmin', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (18, '2018-12-31 11:12:15', b'0', '存储管理', 'tools/storage/index', 36, 23, 'qiniu', 'storage', b'0', b'0', 'Storage', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (19, '2018-12-31 14:52:38', b'0', '支付宝工具', 'tools/aliPay/index', 36, 27, 'alipay', 'aliPay', b'0', b'0', 'AliPay', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (21, '2019-01-04 16:22:03', b'0', '多级菜单', '', 0, 900, 'menu', 'nested', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (22, '2019-01-04 16:23:29', b'0', '二级菜单1', 'nested/menu1/index', 21, 999, 'menu', 'menu1', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (23, '2019-01-04 16:23:57', b'0', '二级菜单2', 'nested/menu2/index', 21, 999, 'menu', 'menu2', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (24, '2019-01-04 16:24:48', b'0', '三级菜单1', 'nested/menu1/menu1-1', 22, 999, 'menu', 'menu1-1', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (27, '2019-01-07 17:27:32', b'0', '三级菜单2', 'nested/menu1/menu1-2', 22, 999, 'menu', 'menu1-2', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (28, '2019-01-07 20:34:40', b'0', '定时任务', 'system/timing/index', 36, 21, 'timing', 'timing', b'0', b'0', 'Timing', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (30, '2019-01-11 15:45:55', b'0', '代码生成', 'generator/index', 36, 22, 'dev', 'generator', b'0', b'0', 'GeneratorIndex', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (32, '2019-01-13 13:49:03', b'0', '异常日志', 'monitor/log/errorLog', 6, 12, 'error', 'errorLog', b'0', b'0', 'ErrorLog', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (33, '2019-03-08 13:46:44', b'0', 'Markdown', 'components/MarkDown', 10, 53, 'markdown', 'markdown', b'0', b'0', 'Markdown', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (34, '2019-03-08 15:49:40', b'0', 'Yaml编辑器', 'components/YamlEdit', 10, 54, 'dev', 'yaml', b'0', b'0', 'YamlEdit', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (35, '2019-03-25 09:46:00', b'0', '部门管理', 'system/dept/index', 1, 6, 'dept', 'dept', b'0', b'0', 'Dept', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (36, '2019-03-29 10:57:35', b'0', '系统工具', '', 0, 20, 'sys-tools', 'sys-tools', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (37, '2019-03-29 13:51:18', b'0', '岗位管理', 'system/job/index', 1, 7, 'Steve-Jobs', 'job', b'0', b'0', 'Job', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (38, '2019-03-29 19:57:53', b'0', '接口文档', 'tools/swagger/index', 36, 26, 'swagger', 'swagger2', b'0', b'0', 'Swagger', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (39, '2019-04-10 11:49:04', b'0', '字典管理', 'system/dict/index', 1, 8, 'dictionary', 'dict', b'0', b'0', 'Dict', b'0', '2019-10-24 21:02:16'); +INSERT INTO `menu` VALUES (41, '2019-10-26 22:08:43', b'0', '在线用户', 'monitor/online/index', 6, 10, 'Steve-Jobs', 'online', b'0', b'0', 'OnlineUser', b'0', '2019-10-26 22:11:28'); -- ---------------------------- -- Table structure for permission @@ -276,65 +290,67 @@ CREATE TABLE `permission` ( `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 '上级权限', + `is_delete` bit(1) NULL DEFAULT b'0', + `update_time` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 60 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 61 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of permission -- ---------------------------- -INSERT INTO `permission` VALUES (1, '超级管理员', '2018-12-03 12:27:48', 'ADMIN', 0); -INSERT INTO `permission` VALUES (2, '用户管理', '2018-12-03 12:28:19', 'USER_ALL', 0); -INSERT INTO `permission` VALUES (3, '用户查询', '2018-12-03 12:31:35', 'USER_SELECT', 2); -INSERT INTO `permission` VALUES (4, '用户创建', '2018-12-03 12:31:35', 'USER_CREATE', 2); -INSERT INTO `permission` VALUES (5, '用户编辑', '2018-12-03 12:31:35', 'USER_EDIT', 2); -INSERT INTO `permission` VALUES (6, '用户删除', '2018-12-03 12:31:35', 'USER_DELETE', 2); -INSERT INTO `permission` VALUES (7, '角色管理', '2018-12-03 12:28:19', 'ROLES_ALL', 0); -INSERT INTO `permission` VALUES (8, '角色查询', '2018-12-03 12:31:35', 'ROLES_SELECT', 7); -INSERT INTO `permission` VALUES (10, '角色创建', '2018-12-09 20:10:16', 'ROLES_CREATE', 7); -INSERT INTO `permission` VALUES (11, '角色编辑', '2018-12-09 20:10:42', 'ROLES_EDIT', 7); -INSERT INTO `permission` VALUES (12, '角色删除', '2018-12-09 20:11:07', 'ROLES_DELETE', 7); -INSERT INTO `permission` VALUES (13, '权限管理', '2018-12-09 20:11:37', 'PERMISSION_ALL', 0); -INSERT INTO `permission` VALUES (14, '权限查询', '2018-12-09 20:11:55', 'PERMISSION_SELECT', 13); -INSERT INTO `permission` VALUES (15, '权限创建', '2018-12-09 20:14:10', 'PERMISSION_CREATE', 13); -INSERT INTO `permission` VALUES (16, '权限编辑', '2018-12-09 20:15:44', 'PERMISSION_EDIT', 13); -INSERT INTO `permission` VALUES (17, '权限删除', '2018-12-09 20:15:59', 'PERMISSION_DELETE', 13); -INSERT INTO `permission` VALUES (18, '缓存管理', '2018-12-17 13:53:25', 'REDIS_ALL', 0); -INSERT INTO `permission` VALUES (20, '缓存查询', '2018-12-17 13:54:07', 'REDIS_SELECT', 18); -INSERT INTO `permission` VALUES (22, '缓存删除', '2018-12-17 13:55:04', 'REDIS_DELETE', 18); -INSERT INTO `permission` VALUES (23, '图床管理', '2018-12-27 20:31:49', 'PICTURE_ALL', 0); -INSERT INTO `permission` VALUES (24, '查询图片', '2018-12-27 20:32:04', 'PICTURE_SELECT', 23); -INSERT INTO `permission` VALUES (25, '上传图片', '2018-12-27 20:32:24', 'PICTURE_UPLOAD', 23); -INSERT INTO `permission` VALUES (26, '删除图片', '2018-12-27 20:32:45', 'PICTURE_DELETE', 23); -INSERT INTO `permission` VALUES (29, '菜单管理', '2018-12-28 17:34:31', 'MENU_ALL', 0); -INSERT INTO `permission` VALUES (30, '菜单查询', '2018-12-28 17:34:41', 'MENU_SELECT', 29); -INSERT INTO `permission` VALUES (31, '菜单创建', '2018-12-28 17:34:52', 'MENU_CREATE', 29); -INSERT INTO `permission` VALUES (32, '菜单编辑', '2018-12-28 17:35:20', 'MENU_EDIT', 29); -INSERT INTO `permission` VALUES (33, '菜单删除', '2018-12-28 17:35:29', 'MENU_DELETE', 29); -INSERT INTO `permission` VALUES (35, '定时任务管理', '2019-01-08 14:59:57', 'JOB_ALL', 0); -INSERT INTO `permission` VALUES (36, '任务查询', '2019-01-08 15:00:09', 'JOB_SELECT', 35); -INSERT INTO `permission` VALUES (37, '任务创建', '2019-01-08 15:00:20', 'JOB_CREATE', 35); -INSERT INTO `permission` VALUES (38, '任务编辑', '2019-01-08 15:00:33', 'JOB_EDIT', 35); -INSERT INTO `permission` VALUES (39, '任务删除', '2019-01-08 15:01:13', 'JOB_DELETE', 35); -INSERT INTO `permission` VALUES (40, '部门管理', '2019-03-29 17:06:55', 'DEPT_ALL', 0); -INSERT INTO `permission` VALUES (41, '部门查询', '2019-03-29 17:07:09', 'DEPT_SELECT', 40); -INSERT INTO `permission` VALUES (42, '部门创建', '2019-03-29 17:07:29', 'DEPT_CREATE', 40); -INSERT INTO `permission` VALUES (43, '部门编辑', '2019-03-29 17:07:52', 'DEPT_EDIT', 40); -INSERT INTO `permission` VALUES (44, '部门删除', '2019-03-29 17:08:14', 'DEPT_DELETE', 40); -INSERT INTO `permission` VALUES (45, '岗位管理', '2019-03-29 17:08:52', 'USERJOB_ALL', 0); -INSERT INTO `permission` VALUES (46, '岗位查询', '2019-03-29 17:10:27', 'USERJOB_SELECT', 45); -INSERT INTO `permission` VALUES (47, '岗位创建', '2019-03-29 17:10:55', 'USERJOB_CREATE', 45); -INSERT INTO `permission` VALUES (48, '岗位编辑', '2019-03-29 17:11:08', 'USERJOB_EDIT', 45); -INSERT INTO `permission` VALUES (49, '岗位删除', '2019-03-29 17:11:19', 'USERJOB_DELETE', 45); -INSERT INTO `permission` VALUES (50, '字典管理', '2019-04-10 16:24:51', 'DICT_ALL', 0); -INSERT INTO `permission` VALUES (51, '字典查询', '2019-04-10 16:25:16', 'DICT_SELECT', 50); -INSERT INTO `permission` VALUES (52, '字典创建', '2019-04-10 16:25:29', 'DICT_CREATE', 50); -INSERT INTO `permission` VALUES (53, '字典编辑', '2019-04-10 16:27:19', 'DICT_EDIT', 50); -INSERT INTO `permission` VALUES (54, '字典删除', '2019-04-10 16:27:30', 'DICT_DELETE', 50); -INSERT INTO `permission` VALUES (55, '文件管理', '2019-09-08 12:31:54', 'LOCALSTORAGE_ALL', 0); -INSERT INTO `permission` VALUES (56, '文件搜索', '2019-09-08 12:40:53', 'LOCALSTORAGE_SELECT', 55); -INSERT INTO `permission` VALUES (57, '文件上传', '2019-09-08 12:41:05', 'LOCALSTORAGE_CREATE', 55); -INSERT INTO `permission` VALUES (58, '文件编辑', '2019-09-08 12:41:19', 'LOCALSTORAGE_EDIT', 55); -INSERT INTO `permission` VALUES (59, '文件删除', '2019-09-08 12:41:29', 'LOCALSTORAGE_DELETE', 55); +INSERT INTO `permission` VALUES (1, '超级管理员', '2018-12-03 12:27:48', 'ADMIN', 0, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (2, '用户管理', '2018-12-03 12:28:19', 'USER_ALL', 0, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (3, '用户查询', '2018-12-03 12:31:35', 'USER_SELECT', 2, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (4, '用户创建', '2018-12-03 12:31:35', 'USER_CREATE', 2, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (5, '用户编辑', '2018-12-03 12:31:35', 'USER_EDIT', 2, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (6, '用户删除', '2018-12-03 12:31:35', 'USER_DELETE', 2, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (7, '角色管理', '2018-12-03 12:28:19', 'ROLES_ALL', 0, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (8, '角色查询', '2018-12-03 12:31:35', 'ROLES_SELECT', 7, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (10, '角色创建', '2018-12-09 20:10:16', 'ROLES_CREATE', 7, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (11, '角色编辑', '2018-12-09 20:10:42', 'ROLES_EDIT', 7, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (12, '角色删除', '2018-12-09 20:11:07', 'ROLES_DELETE', 7, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (13, '权限管理', '2018-12-09 20:11:37', 'PERMISSION_ALL', 0, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (14, '权限查询', '2018-12-09 20:11:55', 'PERMISSION_SELECT', 13, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (15, '权限创建', '2018-12-09 20:14:10', 'PERMISSION_CREATE', 13, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (16, '权限编辑', '2018-12-09 20:15:44', 'PERMISSION_EDIT', 13, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (17, '权限删除', '2018-12-09 20:15:59', 'PERMISSION_DELETE', 13, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (18, '缓存管理', '2018-12-17 13:53:25', 'REDIS_ALL', 0, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (20, '缓存查询', '2018-12-17 13:54:07', 'REDIS_SELECT', 18, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (22, '缓存删除', '2018-12-17 13:55:04', 'REDIS_DELETE', 18, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (23, '图床管理', '2018-12-27 20:31:49', 'PICTURE_ALL', 0, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (24, '查询图片', '2018-12-27 20:32:04', 'PICTURE_SELECT', 23, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (25, '上传图片', '2018-12-27 20:32:24', 'PICTURE_UPLOAD', 23, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (26, '删除图片', '2018-12-27 20:32:45', 'PICTURE_DELETE', 23, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (29, '菜单管理', '2018-12-28 17:34:31', 'MENU_ALL', 0, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (30, '菜单查询', '2018-12-28 17:34:41', 'MENU_SELECT', 29, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (31, '菜单创建', '2018-12-28 17:34:52', 'MENU_CREATE', 29, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (32, '菜单编辑', '2018-12-28 17:35:20', 'MENU_EDIT', 29, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (33, '菜单删除', '2018-12-28 17:35:29', 'MENU_DELETE', 29, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (35, '定时任务管理', '2019-01-08 14:59:57', 'JOB_ALL', 0, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (36, '任务查询', '2019-01-08 15:00:09', 'JOB_SELECT', 35, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (37, '任务创建', '2019-01-08 15:00:20', 'JOB_CREATE', 35, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (38, '任务编辑', '2019-01-08 15:00:33', 'JOB_EDIT', 35, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (39, '任务删除', '2019-01-08 15:01:13', 'JOB_DELETE', 35, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (40, '部门管理', '2019-03-29 17:06:55', 'DEPT_ALL', 0, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (41, '部门查询', '2019-03-29 17:07:09', 'DEPT_SELECT', 40, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (42, '部门创建', '2019-03-29 17:07:29', 'DEPT_CREATE', 40, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (43, '部门编辑', '2019-03-29 17:07:52', 'DEPT_EDIT', 40, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (44, '部门删除', '2019-03-29 17:08:14', 'DEPT_DELETE', 40, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (45, '岗位管理', '2019-03-29 17:08:52', 'USERJOB_ALL', 0, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (46, '岗位查询', '2019-03-29 17:10:27', 'USERJOB_SELECT', 45, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (47, '岗位创建', '2019-03-29 17:10:55', 'USERJOB_CREATE', 45, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (48, '岗位编辑', '2019-03-29 17:11:08', 'USERJOB_EDIT', 45, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (49, '岗位删除', '2019-03-29 17:11:19', 'USERJOB_DELETE', 45, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (50, '字典管理', '2019-04-10 16:24:51', 'DICT_ALL', 0, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (51, '字典查询', '2019-04-10 16:25:16', 'DICT_SELECT', 50, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (52, '字典创建', '2019-04-10 16:25:29', 'DICT_CREATE', 50, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (53, '字典编辑', '2019-04-10 16:27:19', 'DICT_EDIT', 50, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (54, '字典删除', '2019-04-10 16:27:30', 'DICT_DELETE', 50, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (55, '文件管理', '2019-09-08 12:31:54', 'LOCALSTORAGE_ALL', 0, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (56, '文件搜索', '2019-09-08 12:40:53', 'LOCALSTORAGE_SELECT', 55, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (57, '文件上传', '2019-09-08 12:41:05', 'LOCALSTORAGE_CREATE', 55, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (58, '文件编辑', '2019-09-08 12:41:19', 'LOCALSTORAGE_EDIT', 55, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (59, '文件删除', '2019-09-08 12:41:29', 'LOCALSTORAGE_DELETE', 55, b'0', '2019-10-24 21:00:50'); -- ---------------------------- -- Table structure for picture @@ -350,8 +366,9 @@ CREATE TABLE `picture` ( `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 '图片宽度', + `md5code` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 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 qiniu_config @@ -382,7 +399,7 @@ CREATE TABLE `qiniu_content` ( `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件url', `suffix` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 24 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 quartz_job @@ -397,16 +414,18 @@ CREATE TABLE `quartz_job` ( `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 '创建或更新日期', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', + `is_delete` bit(1) NULL DEFAULT b'0', + `update_time` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- 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-08-22 14:08:29'); -INSERT INTO `quartz_job` VALUES (3, 'testTask', '0/5 * * * * ?', b'1', '测试', 'run', '', '不带参测试', '2019-09-26 16:44:39'); +INSERT INTO `quartz_job` VALUES (1, 'visitsTask', '0 0 0 * * ?', b'0', '更新访客记录', 'run', NULL, '每日0点创建新的访客记录', '2019-01-08 14:53:31', b'0', NULL); +INSERT INTO `quartz_job` VALUES (2, 'testTask', '0/5 * * * * ?', b'1', '测试1', 'run1', 'test', '带参测试,多参使用json', '2019-08-22 14:08:29', b'0', NULL); +INSERT INTO `quartz_job` VALUES (3, 'testTask', '0/5 * * * * ?', b'1', '测试', 'run', '', '不带参测试', '2019-09-26 16:44:39', b'0', '2019-10-26 22:36:04'); -- ---------------------------- -- Table structure for quartz_log @@ -424,7 +443,15 @@ CREATE TABLE `quartz_log` ( `params` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `time` bigint(20) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 51 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of quartz_log +-- ---------------------------- +INSERT INTO `quartz_log` VALUES (1, 'testTask', '2019-10-24 14:23:41', '0/5 * * * * ?', NULL, b'1', '测试1', 'run1', 'test', 3); +INSERT INTO `quartz_log` VALUES (2, 'testTask', '2019-10-24 14:23:46', '0/5 * * * * ?', NULL, b'1', '测试', 'run', '', 0); +INSERT INTO `quartz_log` VALUES (3, 'testTask', '2019-10-26 22:35:57', '0/5 * * * * ?', NULL, b'1', '测试', 'run', '', 2); +INSERT INTO `quartz_log` VALUES (4, 'testTask', '2019-10-26 22:36:00', '0/5 * * * * ?', NULL, b'1', '测试', 'run', '', 1); -- ---------------------------- -- Table structure for role @@ -437,15 +464,17 @@ CREATE TABLE `role` ( `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', `data_scope` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `level` int(255) NULL DEFAULT NULL, + `is_delete` bit(1) NULL DEFAULT b'0', + `update_time` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 5 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; -- ---------------------------- -- Records of role -- ---------------------------- -INSERT INTO `role` VALUES (1, '2018-11-23 11:04:37', '超级管理员', '·', '全部', 1); -INSERT INTO `role` VALUES (2, '2018-11-23 13:09:06', '普通用户', '用于测试菜单与权限', '自定义', 3); -INSERT INTO `role` VALUES (4, '2019-05-13 14:16:15', '普通管理员', '普通管理员级别为2,使用该角色新增用户时只能赋予比普通管理员级别低的角色', '自定义', 2); +INSERT INTO `role` VALUES (1, '2018-11-23 11:04:37', '超级管理员', '·', '全部', 1, b'0', '2019-10-26 22:09:18'); +INSERT INTO `role` VALUES (2, '2018-11-23 13:09:06', '普通用户', '用于测试菜单与权限', '自定义', 3, b'0', '2019-10-24 21:02:16'); +INSERT INTO `role` VALUES (4, '2019-05-13 14:16:15', '普通管理员', '普通管理员级别为2,使用该角色新增用户时只能赋予比普通管理员级别低的角色', '自定义', 2, b'0', '2019-10-24 21:02:16'); -- ---------------------------- -- Table structure for roles_depts @@ -517,6 +546,7 @@ INSERT INTO `roles_menus` VALUES (36, 1); INSERT INTO `roles_menus` VALUES (37, 1); INSERT INTO `roles_menus` VALUES (38, 1); INSERT INTO `roles_menus` VALUES (39, 1); +INSERT INTO `roles_menus` VALUES (41, 1); INSERT INTO `roles_menus` VALUES (1, 2); INSERT INTO `roles_menus` VALUES (2, 2); INSERT INTO `roles_menus` VALUES (3, 2); @@ -600,6 +630,8 @@ CREATE TABLE `user` ( `dept_id` bigint(20) NULL DEFAULT NULL, `phone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `job_id` bigint(20) NULL DEFAULT NULL, + `is_delete` bit(1) NULL DEFAULT b'0', + `update_time` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `UK_kpubos9gc2cvtkb0thktkbkes`(`email`) USING BTREE, UNIQUE INDEX `username`(`username`) USING BTREE, @@ -609,14 +641,14 @@ CREATE TABLE `user` ( CONSTRAINT `FK5rwmryny6jthaaxkogownknqp` FOREIGN KEY (`dept_id`) REFERENCES `dept` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `FKfftoc2abhot8f2wu6cl9a5iky` FOREIGN KEY (`job_id`) REFERENCES `job` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `FKpq2dhypk2qgt68nauh2by22jb` FOREIGN KEY (`avatar_id`) REFERENCES `user_avatar` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of user -- ---------------------------- -INSERT INTO `user` VALUES (1, NULL, '2018-08-23 09:11:56', 'admin@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'admin', '2019-05-18 17:34:21', 2, '18888888888', 11); -INSERT INTO `user` VALUES (3, NULL, '2018-12-27 20:05:26', 'test@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'test', '2019-04-01 09:15:24', 2, '17777777777', 12); -INSERT INTO `user` VALUES (5, NULL, '2019-04-02 10:07:12', 'hr@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'hr', NULL, 11, '15555555555', 8); +INSERT INTO `user` VALUES (1, NULL, '2018-08-23 09:11:56', 'admin@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'admin', '2019-05-18 17:34:21', 2, '18888888888', 11, b'0', '2019-10-24 20:58:48'); +INSERT INTO `user` VALUES (3, NULL, '2018-12-27 20:05:26', 'test@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'test', '2019-04-01 09:15:24', 2, '17777777777', 12, b'0', '2019-10-24 20:58:46'); +INSERT INTO `user` VALUES (5, NULL, '2019-04-02 10:07:12', 'hr@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'hr', NULL, 11, '15555555555', 8, b'0', '2019-10-24 20:45:51'); -- ---------------------------- -- Table structure for user_avatar @@ -627,6 +659,9 @@ CREATE TABLE `user_avatar` ( `real_name` 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, `size` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `create_time` datetime NULL DEFAULT NULL, + `is_delete` bit(1) NULL DEFAULT b'0', + `update_time` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; @@ -678,6 +713,6 @@ CREATE TABLE `visits` ( `week_day` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `UK_11aksgq87euk9bcyeesfs4vtp`(`date`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 96 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 103 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; SET FOREIGN_KEY_CHECKS = 1; From e2b0b93cca9be79291c99859ef7214051d5aa930 Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Sun, 27 Oct 2019 17:38:32 +0800 Subject: [PATCH 10/25] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/zhengjie/config/RedisConfig.java | 24 ++++++++++++++----- .../service/impl/RedisServiceImpl.java | 7 ++++-- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java index 99413a72..aea58074 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.parser.ParserConfig; import com.alibaba.fastjson.serializer.SerializerFeature; import lombok.extern.slf4j.Slf4j; import me.zhengjie.utils.StringUtils; +import org.apache.commons.codec.digest.DigestUtils; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.data.redis.RedisProperties; @@ -26,6 +27,8 @@ import org.springframework.data.redis.serializer.RedisSerializer; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.time.Duration; +import java.util.HashMap; +import java.util.Map; /** * @author Zheng Jie @@ -83,13 +86,22 @@ public class RedisConfig extends CachingConfigurerSupport { @Override public KeyGenerator keyGenerator() { return (target, method, params) -> { - StringBuilder sb = new StringBuilder(); - sb.append(target.getClass().getName()); - sb.append(method.getName()); - for (Object obj : params) { - sb.append(JSON.toJSONString(obj).hashCode()); + Map container = new HashMap<>(); + Class targetClassClass = target.getClass(); + // 类地址 + container.put("class",targetClassClass.toGenericString()); + // 方法名称 + container.put("methodName",method.getName()); + // 包名称 + container.put("package",targetClassClass.getPackage()); + // 参数列表 + for (int i = 0; i < params.length; i++) { + container.put(String.valueOf(i),params[i]); } - return sb.toString(); + // 转为JSON字符串 + String jsonString = JSON.toJSONString(container); + // 做SHA256 Hash计算,得到一个SHA256摘要作为Key + return DigestUtils.sha256Hex(jsonString); }; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java index 93431834..96439220 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java @@ -27,6 +27,9 @@ public class RedisServiceImpl implements RedisService { @Value("${loginCode.expiration}") private Long expiration; + @Value("${jwt.online}") + private String onlineKey; + public RedisServiceImpl(RedisTemplate redisTemplate) { this.redisTemplate = redisTemplate; } @@ -40,7 +43,7 @@ public class RedisServiceImpl implements RedisService { Set keys = redisTemplate.keys(key); for (String s : keys) { // 过滤掉权限的缓存 - if (s.contains("role::loadPermissionByUser") || s.contains("user::loadUserByUsername") || s.contains("online:token")) { + if (s.contains("role::loadPermissionByUser") || s.contains("user::loadUserByUsername") || s.contains(onlineKey)) { continue; } RedisVo redisVo = new RedisVo(s, Objects.requireNonNull(redisTemplate.opsForValue().get(s)).toString()); @@ -60,7 +63,7 @@ public class RedisServiceImpl implements RedisService { @Override public void deleteAll() { Set keys = redisTemplate.keys( "*"); - redisTemplate.delete(keys.stream().filter(s -> !s.contains("online:token")).collect(Collectors.toList())); + redisTemplate.delete(keys.stream().filter(s -> !s.contains(onlineKey)).collect(Collectors.toList())); } @Override From 7fe31802a7e721dded725b1e09a3ec3f8446a6a5 Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Sun, 27 Oct 2019 21:09:13 +0800 Subject: [PATCH 11/25] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=8C=E6=9B=B4=E6=96=B0sql=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/quartz/domain/QuartzJob.java | 11 +- .../zhengjie/modules/system/domain/Dept.java | 11 +- .../zhengjie/modules/system/domain/Dict.java | 10 +- .../modules/system/domain/DictDetail.java | 11 +- .../zhengjie/modules/system/domain/Job.java | 11 +- .../zhengjie/modules/system/domain/Menu.java | 11 +- .../modules/system/domain/Permission.java | 11 +- .../zhengjie/modules/system/domain/Role.java | 13 +- .../zhengjie/modules/system/domain/User.java | 11 +- .../modules/system/domain/UserAvatar.java | 9 +- .../modules/system/service/dto/DeptDTO.java | 6 +- .../modules/system/service/dto/DictDTO.java | 7 +- .../system/service/dto/DictDetailDTO.java | 7 +- .../modules/system/service/dto/JobDTO.java | 6 +- .../modules/system/service/dto/MenuDTO.java | 7 +- .../system/service/dto/PermissionDTO.java | 7 +- .../modules/system/service/dto/RoleDTO.java | 7 +- .../modules/system/service/dto/UserDTO.java | 6 +- .../system/service/impl/MenuServiceImpl.java | 4 +- .../service/impl/PermissionServiceImpl.java | 4 +- .../java/me/zhengjie/domain/LocalStorage.java | 9 +- .../zhengjie/service/dto/LocalStorageDTO.java | 7 +- sql/eladmin.sql | 307 ++++++++---------- 23 files changed, 282 insertions(+), 211 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java index 8faa1500..2916e27f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java @@ -2,10 +2,11 @@ package me.zhengjie.modules.quartz.domain; import lombok.Getter; import lombok.Setter; -import me.zhengjie.base.BaseEntity; +import org.hibernate.annotations.CreationTimestamp; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import java.sql.Timestamp; /** * @author Zheng Jie @@ -15,7 +16,7 @@ import javax.validation.constraints.NotNull; @Setter @Entity @Table(name = "quartz_job") -public class QuartzJob extends BaseEntity { +public class QuartzJob{ public static final String JOB_KEY = "JOB_KEY"; @@ -55,4 +56,10 @@ public class QuartzJob extends BaseEntity { @Column(name = "remark") @NotBlank private String remark; + + @Column(name = "create_time") + @CreationTimestamp + private Timestamp createTime; + + public @interface Update {} } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java index 303b364b..78c62cae 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java @@ -3,10 +3,11 @@ package me.zhengjie.modules.system.domain; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; import lombok.Setter; -import me.zhengjie.base.BaseEntity; +import org.hibernate.annotations.CreationTimestamp; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import java.sql.Timestamp; import java.util.Set; /** @@ -17,7 +18,7 @@ import java.util.Set; @Getter @Setter @Table(name="dept") -public class Dept extends BaseEntity { +public class Dept { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -39,4 +40,10 @@ public class Dept extends BaseEntity { @JsonIgnore @ManyToMany(mappedBy = "depts") private Set roles; + + @Column(name = "create_time") + @CreationTimestamp + private Timestamp createTime; + + public @interface Update {} } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java index 567b7beb..c1c757db 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java @@ -3,9 +3,11 @@ package me.zhengjie.modules.system.domain; import lombok.Getter; import lombok.Setter; import me.zhengjie.base.BaseEntity; +import org.hibernate.annotations.CreationTimestamp; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import java.sql.Timestamp; import java.util.List; /** @@ -16,7 +18,7 @@ import java.util.List; @Getter @Setter @Table(name="dict") -public class Dict extends BaseEntity { +public class Dict{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -31,6 +33,12 @@ public class Dict extends BaseEntity { @Column(name = "remark") private String remark; + @Column(name = "create_time") + @CreationTimestamp + private Timestamp createTime; + @OneToMany(mappedBy = "dict",cascade={CascadeType.PERSIST,CascadeType.REMOVE}) private List dictDetails; + + public @interface Update {} } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java index 524491b7..ae44c55c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java @@ -2,9 +2,10 @@ package me.zhengjie.modules.system.domain; import lombok.Getter; import lombok.Setter; -import me.zhengjie.base.BaseEntity; +import org.hibernate.annotations.CreationTimestamp; import javax.persistence.*; import javax.validation.constraints.NotNull; +import java.sql.Timestamp; /** * @author Zheng Jie @@ -14,7 +15,7 @@ import javax.validation.constraints.NotNull; @Getter @Setter @Table(name="dict_detail") -public class DictDetail extends BaseEntity { +public class DictDetail { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -38,4 +39,10 @@ public class DictDetail extends BaseEntity { @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name = "dict_id") private Dict dict; + + @Column(name = "create_time") + @CreationTimestamp + private Timestamp createTime; + + public @interface Update {} } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java index a70347b3..5d9b32a4 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java @@ -2,12 +2,13 @@ package me.zhengjie.modules.system.domain; import lombok.Getter; import lombok.Setter; -import me.zhengjie.base.BaseEntity; +import org.hibernate.annotations.CreationTimestamp; import javax.persistence.*; import javax.persistence.Entity; import javax.persistence.Table; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import java.sql.Timestamp; /** * @author Zheng Jie @@ -17,7 +18,7 @@ import javax.validation.constraints.NotNull; @Getter @Setter @Table(name="job") -public class Job extends BaseEntity { +public class Job { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -40,4 +41,10 @@ public class Job extends BaseEntity { @OneToOne @JoinColumn(name = "dept_id") private Dept dept; + + @Column(name = "create_time") + @CreationTimestamp + private Timestamp createTime; + + public @interface Update {} } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java index b9fb2292..6a0b17b1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java @@ -3,10 +3,11 @@ package me.zhengjie.modules.system.domain; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; import lombok.Setter; -import me.zhengjie.base.BaseEntity; +import org.hibernate.annotations.CreationTimestamp; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import java.sql.Timestamp; import java.util.Objects; import java.util.Set; @@ -18,7 +19,7 @@ import java.util.Set; @Getter @Setter @Table(name = "menu") -public class Menu extends BaseEntity { +public class Menu{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -61,6 +62,12 @@ public class Menu extends BaseEntity { @JsonIgnore private Set roles; + @Column(name = "create_time") + @CreationTimestamp + private Timestamp createTime; + + public @interface Update {} + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java index e6f252be..f23aa3e6 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java @@ -3,10 +3,11 @@ package me.zhengjie.modules.system.domain; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; import lombok.Setter; -import me.zhengjie.base.BaseEntity; +import org.hibernate.annotations.CreationTimestamp; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import java.sql.Timestamp; import java.util.Set; /** @@ -17,7 +18,7 @@ import java.util.Set; @Getter @Setter @Table(name = "permission") -public class Permission extends BaseEntity { +public class Permission{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -35,7 +36,13 @@ public class Permission extends BaseEntity { @NotBlank private String alias; + @Column(name = "create_time") + @CreationTimestamp + private Timestamp createTime; + @JsonIgnore @ManyToMany(mappedBy = "permissions") private Set roles; + + public @interface Update {} } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java index 8690c889..ef33f9d2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java @@ -3,10 +3,11 @@ package me.zhengjie.modules.system.domain; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; import lombok.Setter; -import me.zhengjie.base.BaseEntity; +import org.hibernate.annotations.CreationTimestamp; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import java.sql.Timestamp; import java.util.Objects; import java.util.Set; @@ -19,7 +20,7 @@ import java.util.Set; @Table(name = "role") @Getter @Setter -public class Role extends BaseEntity { +public class Role{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -57,6 +58,12 @@ public class Role extends BaseEntity { @JoinTable(name = "roles_depts", joinColumns = {@JoinColumn(name = "role_id",referencedColumnName = "id")}, inverseJoinColumns = {@JoinColumn(name = "dept_id",referencedColumnName = "id")}) private Set depts; + @Column(name = "create_time") + @CreationTimestamp + private Timestamp createTime; + + public @interface Update {} + @Override public boolean equals(Object o) { if (this == o) return true; @@ -69,6 +76,4 @@ public class Role extends BaseEntity { public int hashCode() { return Objects.hash(id); } - - public interface Update{} } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java index 0e0c89a8..c2f1336b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java @@ -2,11 +2,12 @@ package me.zhengjie.modules.system.domain; import lombok.Getter; import lombok.Setter; -import me.zhengjie.base.BaseEntity; +import org.hibernate.annotations.CreationTimestamp; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; +import java.sql.Timestamp; import java.util.Date; import java.util.Set; @@ -18,7 +19,7 @@ import java.util.Set; @Getter @Setter @Table(name="user") -public class User extends BaseEntity { +public class User{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -45,6 +46,10 @@ public class User extends BaseEntity { private String password; + @Column(name = "create_time") + @CreationTimestamp + private Timestamp createTime; + @Column(name = "last_password_reset_time") private Date lastPasswordResetTime; @@ -59,4 +64,6 @@ public class User extends BaseEntity { @OneToOne @JoinColumn(name = "dept_id") private Dept dept; + + public @interface Update {} } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/UserAvatar.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/UserAvatar.java index c0d1997f..e3174b97 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/UserAvatar.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/UserAvatar.java @@ -5,7 +5,10 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import me.zhengjie.base.BaseEntity; +import org.hibernate.annotations.CreationTimestamp; + import javax.persistence.*; +import java.sql.Timestamp; /** * @author Zheng Jie @@ -16,7 +19,7 @@ import javax.persistence.*; @Setter @NoArgsConstructor @Table(name = "user_avatar") -public class UserAvatar extends BaseEntity { +public class UserAvatar { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -28,6 +31,10 @@ public class UserAvatar extends BaseEntity { private String size; + @Column(name = "create_time") + @CreationTimestamp + private Timestamp createTime; + public UserAvatar(UserAvatar userAvatar,String realName, String path, String size) { this.id = ObjectUtil.isNotEmpty(userAvatar) ? userAvatar.getId() : null; this.realName = realName; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDTO.java index 3001b827..2c49eb33 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDTO.java @@ -3,8 +3,8 @@ package me.zhengjie.modules.system.service.dto; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; import lombok.Setter; -import me.zhengjie.base.BaseDTO; import javax.validation.constraints.NotNull; +import java.sql.Timestamp; import java.util.List; /** @@ -13,7 +13,7 @@ import java.util.List; */ @Getter @Setter -public class DeptDTO extends BaseDTO { +public class DeptDTO{ // ID private Long id; @@ -30,6 +30,8 @@ public class DeptDTO extends BaseDTO { @JsonInclude(JsonInclude.Include.NON_EMPTY) private List children; + private Timestamp createTime; + public String getLabel() { return name; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDTO.java index 3b011e23..eb07e218 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDTO.java @@ -2,7 +2,8 @@ package me.zhengjie.modules.system.service.dto; import lombok.Getter; import lombok.Setter; -import me.zhengjie.base.BaseDTO; + +import java.sql.Timestamp; /** * @author Zheng Jie @@ -10,11 +11,13 @@ import me.zhengjie.base.BaseDTO; */ @Getter @Setter -public class DictDTO extends BaseDTO { +public class DictDTO{ private Long id; private String name; private String remark; + + private Timestamp createTime; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDTO.java index f513ebe2..abb7219c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDTO.java @@ -2,7 +2,8 @@ package me.zhengjie.modules.system.service.dto; import lombok.Getter; import lombok.Setter; -import me.zhengjie.base.BaseDTO; + +import java.sql.Timestamp; /** * @author Zheng Jie @@ -10,7 +11,7 @@ import me.zhengjie.base.BaseDTO; */ @Getter @Setter -public class DictDetailDTO extends BaseDTO { +public class DictDetailDTO{ private Long id; @@ -19,4 +20,6 @@ public class DictDetailDTO extends BaseDTO { private String value; private String sort; + + private Timestamp createTime; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java index 08e59c69..69767f11 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java @@ -3,7 +3,7 @@ package me.zhengjie.modules.system.service.dto; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import me.zhengjie.base.BaseDTO; +import java.sql.Timestamp; /** * @author Zheng Jie @@ -12,7 +12,7 @@ import me.zhengjie.base.BaseDTO; @Getter @Setter @NoArgsConstructor -public class JobDTO extends BaseDTO { +public class JobDTO{ private Long id; @@ -26,6 +26,8 @@ public class JobDTO extends BaseDTO { private String deptSuperiorName; + private Timestamp createTime; + public JobDTO(String name, Boolean enabled) { this.name = name; this.enabled = enabled; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java index c0896ff9..56733e14 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java @@ -2,7 +2,8 @@ package me.zhengjie.modules.system.service.dto; import lombok.Getter; import lombok.Setter; -import me.zhengjie.base.BaseDTO; + +import java.sql.Timestamp; import java.util.List; /** @@ -11,7 +12,7 @@ import java.util.List; */ @Getter @Setter -public class MenuDTO extends BaseDTO { +public class MenuDTO{ private Long id; @@ -36,4 +37,6 @@ public class MenuDTO extends BaseDTO { private String icon; private List children; + + private Timestamp createTime; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionDTO.java index e4589e67..38a36076 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionDTO.java @@ -2,7 +2,8 @@ package me.zhengjie.modules.system.service.dto; import lombok.Getter; import lombok.Setter; -import me.zhengjie.base.BaseDTO; + +import java.sql.Timestamp; import java.util.List; /** @@ -11,7 +12,7 @@ import java.util.List; */ @Getter @Setter -public class PermissionDTO extends BaseDTO { +public class PermissionDTO{ private Long id; @@ -22,4 +23,6 @@ public class PermissionDTO extends BaseDTO { private String alias; private List children; + + private Timestamp createTime; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java index 4d8ab7a1..8dff2bf5 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java @@ -2,7 +2,8 @@ package me.zhengjie.modules.system.service.dto; import lombok.Getter; import lombok.Setter; -import me.zhengjie.base.BaseDTO; + +import java.sql.Timestamp; import java.util.Set; /** @@ -11,7 +12,7 @@ import java.util.Set; */ @Getter @Setter -public class RoleDTO extends BaseDTO { +public class RoleDTO{ private Long id; @@ -28,4 +29,6 @@ public class RoleDTO extends BaseDTO { private Set menus; private Set depts; + + private Timestamp createTime; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDTO.java index 848c1789..2bb96580 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDTO.java @@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; -import me.zhengjie.base.BaseDTO; +import java.sql.Timestamp; import java.util.Date; import java.util.Set; @@ -14,7 +14,7 @@ import java.util.Set; */ @Getter @Setter -public class UserDTO extends BaseDTO { +public class UserDTO { @ApiModelProperty(hidden = true) private Long id; @@ -43,4 +43,6 @@ public class UserDTO extends BaseDTO { private DeptSmallDTO dept; private Long deptId; + + private Timestamp createTime; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java index d78eadf1..ddf238a1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java @@ -20,6 +20,7 @@ import me.zhengjie.utils.ValidationUtil; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -46,7 +47,8 @@ public class MenuServiceImpl implements MenuService { @Override @Cacheable public List queryAll(MenuQueryCriteria criteria){ - return menuMapper.toDto(menuRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); + Sort sort = new Sort(Sort.Direction.DESC,"id"); + return menuMapper.toDto(menuRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),sort)); } @Override diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java index f1ed9e28..0c839149 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java @@ -14,6 +14,7 @@ import me.zhengjie.utils.ValidationUtil; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -43,7 +44,8 @@ public class PermissionServiceImpl implements PermissionService { @Override @Cacheable public List queryAll(PermissionQueryCriteria criteria) { - return permissionMapper.toDto(permissionRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); + Sort sort = new Sort(Sort.Direction.DESC,"id"); + return permissionMapper.toDto(permissionRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),sort)); } @Override diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/LocalStorage.java b/eladmin-tools/src/main/java/me/zhengjie/domain/LocalStorage.java index cbe37c00..e10880f0 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/LocalStorage.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/LocalStorage.java @@ -4,7 +4,10 @@ import lombok.*; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; import me.zhengjie.base.BaseEntity; +import org.hibernate.annotations.CreationTimestamp; + import javax.persistence.*; +import java.sql.Timestamp; /** * @author Zheng Jie @@ -15,7 +18,7 @@ import javax.persistence.*; @Entity @Table(name="local_storage") @NoArgsConstructor -public class LocalStorage extends BaseEntity { +public class LocalStorage { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -50,6 +53,10 @@ public class LocalStorage extends BaseEntity { @Column(name = "operate") private String operate; + @Column(name = "create_time") + @CreationTimestamp + private Timestamp createTime; + public LocalStorage(String realName,String name, String suffix, String path, String type, String size, String operate) { this.realName = realName; this.name = name; diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageDTO.java b/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageDTO.java index d05b81b3..cfa2df5f 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageDTO.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageDTO.java @@ -2,7 +2,8 @@ package me.zhengjie.service.dto; import lombok.Getter; import lombok.Setter; -import me.zhengjie.base.BaseDTO; + +import java.sql.Timestamp; /** * @author Zheng Jie @@ -10,7 +11,7 @@ import me.zhengjie.base.BaseDTO; */ @Getter @Setter -public class LocalStorageDTO extends BaseDTO { +public class LocalStorageDTO{ // ID private Long id; @@ -31,4 +32,6 @@ public class LocalStorageDTO extends BaseDTO { // 操作人 private String operate; + + private Timestamp createTime; } \ No newline at end of file diff --git a/sql/eladmin.sql b/sql/eladmin.sql index 3d06651d..779ab38a 100644 --- a/sql/eladmin.sql +++ b/sql/eladmin.sql @@ -11,7 +11,7 @@ Target Server Version : 50562 File Encoding : 65001 - Date: 26/10/2019 23:45:00 + Date: 27/10/2019 21:00:30 */ SET NAMES utf8mb4; @@ -49,26 +49,23 @@ CREATE TABLE `dept` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称', `pid` bigint(20) NOT NULL COMMENT '上级部门', - `create_time` datetime NULL DEFAULT NULL, `enabled` bit(1) NOT NULL, - `is_delete` bit(1) NULL DEFAULT b'0', - `update_time` datetime NULL DEFAULT NULL, + `create_time` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of dept -- ---------------------------- -INSERT INTO `dept` VALUES (1, 'eladmin', 0, '2019-03-25 09:14:05', b'1', b'0', '2019-10-24 21:03:08'); -INSERT INTO `dept` VALUES (2, '研发部', 7, '2019-03-25 09:15:32', b'1', b'0', '2019-10-24 21:02:16'); -INSERT INTO `dept` VALUES (5, '运维部', 7, '2019-03-25 09:20:44', b'1', b'0', '2019-10-24 21:02:16'); -INSERT INTO `dept` VALUES (6, '测试部', 8, '2019-03-25 09:52:18', b'1', b'0', '2019-10-24 21:02:16'); -INSERT INTO `dept` VALUES (7, '华南分部', 1, '2019-03-25 11:04:50', b'1', b'0', '2019-10-24 21:02:16'); -INSERT INTO `dept` VALUES (8, '华北分部', 1, '2019-03-25 11:04:53', b'1', b'0', '2019-10-24 21:02:16'); -INSERT INTO `dept` VALUES (9, '财务部', 7, '2019-03-25 11:05:34', b'1', b'0', '2019-10-24 21:02:16'); -INSERT INTO `dept` VALUES (10, '行政部', 8, '2019-03-25 11:05:58', b'1', b'0', '2019-10-24 21:02:16'); -INSERT INTO `dept` VALUES (11, '人事部', 8, '2019-03-25 11:07:58', b'1', b'0', '2019-10-24 21:02:16'); -INSERT INTO `dept` VALUES (12, '市场部', 7, '2019-03-25 11:10:24', b'0', b'0', '2019-10-24 21:02:16'); +INSERT INTO `dept` VALUES (1, 'eladmin', 0, b'1', '2019-03-25 09:14:05'); +INSERT INTO `dept` VALUES (2, '研发部', 7, b'1', '2019-03-25 09:15:32'); +INSERT INTO `dept` VALUES (5, '运维部', 7, b'1', '2019-03-25 09:20:44'); +INSERT INTO `dept` VALUES (6, '测试部', 8, b'1', '2019-03-25 09:52:18'); +INSERT INTO `dept` VALUES (7, '华南分部', 1, b'1', '2019-03-25 11:04:50'); +INSERT INTO `dept` VALUES (8, '华北分部', 1, b'1', '2019-03-25 11:04:53'); +INSERT INTO `dept` VALUES (9, '财务部', 7, b'1', '2019-03-25 11:05:34'); +INSERT INTO `dept` VALUES (10, '行政部', 8, b'1', '2019-03-25 11:05:58'); +INSERT INTO `dept` VALUES (11, '人事部', 8, b'1', '2019-03-25 11:07:58'); -- ---------------------------- -- Table structure for dict @@ -79,17 +76,15 @@ CREATE TABLE `dict` ( `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 '描述', `create_time` datetime NULL DEFAULT NULL, - `is_delete` bit(1) NULL DEFAULT b'0', - `update_time` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of dict -- ---------------------------- -INSERT INTO `dict` VALUES (1, 'user_status', '用户状态', NULL, b'0', NULL); -INSERT INTO `dict` VALUES (4, 'dept_status', '部门状态', NULL, b'0', NULL); -INSERT INTO `dict` VALUES (5, 'job_status', '岗位状态', NULL, b'0', NULL); +INSERT INTO `dict` VALUES (1, 'user_status', '用户状态', '2019-10-27 20:31:36'); +INSERT INTO `dict` VALUES (4, 'dept_status', '部门状态', '2019-10-27 20:31:36'); +INSERT INTO `dict` VALUES (5, 'job_status', '岗位状态', '2019-10-27 20:31:36'); -- ---------------------------- -- Table structure for dict_detail @@ -102,8 +97,6 @@ CREATE TABLE `dict_detail` ( `sort` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '排序', `dict_id` bigint(11) NULL DEFAULT NULL COMMENT '字典id', `create_time` datetime NULL DEFAULT NULL, - `is_delete` bit(1) NULL DEFAULT b'0', - `update_time` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `FK5tpkputc6d9nboxojdbgnpmyb`(`dict_id`) USING BTREE, CONSTRAINT `FK5tpkputc6d9nboxojdbgnpmyb` FOREIGN KEY (`dict_id`) REFERENCES `dict` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT @@ -112,12 +105,12 @@ CREATE TABLE `dict_detail` ( -- ---------------------------- -- Records of dict_detail -- ---------------------------- -INSERT INTO `dict_detail` VALUES (1, '激活', 'true', '1', 1, NULL, b'0', '2019-10-24 21:02:16'); -INSERT INTO `dict_detail` VALUES (2, '锁定', 'false', '2', 1, NULL, b'0', '2019-10-24 21:02:16'); -INSERT INTO `dict_detail` VALUES (11, '正常', 'true', '1', 4, NULL, b'0', '2019-10-24 21:02:16'); -INSERT INTO `dict_detail` VALUES (12, '停用', 'false', '2', 4, NULL, b'0', '2019-10-24 21:02:16'); -INSERT INTO `dict_detail` VALUES (13, '正常', 'true', '1', 5, NULL, b'0', '2019-10-24 21:02:16'); -INSERT INTO `dict_detail` VALUES (14, '停用', 'false', '2', 5, NULL, b'0', '2019-10-24 21:02:16'); +INSERT INTO `dict_detail` VALUES (1, '激活', 'true', '1', 1, '2019-10-27 20:31:36'); +INSERT INTO `dict_detail` VALUES (2, '锁定', 'false', '2', 1, '2019-10-27 20:31:36'); +INSERT INTO `dict_detail` VALUES (11, '正常', 'true', '1', 4, '2019-10-27 20:31:36'); +INSERT INTO `dict_detail` VALUES (12, '停用', 'false', '2', 4, '2019-10-27 20:31:36'); +INSERT INTO `dict_detail` VALUES (13, '正常', 'true', '1', 5, '2019-10-27 20:31:36'); +INSERT INTO `dict_detail` VALUES (14, '停用', 'false', '2', 5, '2019-10-27 20:31:36'); -- ---------------------------- -- Table structure for email_config @@ -162,24 +155,22 @@ CREATE TABLE `job` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `enabled` bit(1) NOT NULL, - `create_time` datetime NULL DEFAULT NULL, `sort` bigint(20) NOT NULL, `dept_id` bigint(20) NULL DEFAULT NULL, - `is_delete` bit(1) NULL DEFAULT b'0', - `update_time` datetime NULL DEFAULT NULL, + `create_time` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `FKmvhj0rogastlctflsxf1d6k3i`(`dept_id`) USING BTREE, CONSTRAINT `FKmvhj0rogastlctflsxf1d6k3i` FOREIGN KEY (`dept_id`) REFERENCES `dept` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 20 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of job -- ---------------------------- -INSERT INTO `job` VALUES (2, '董事长秘书', b'1', '2019-03-29 14:01:30', 2, 1, b'0', '2019-10-24 21:02:16'); -INSERT INTO `job` VALUES (8, '人事专员', b'1', '2019-03-29 14:52:28', 3, 11, b'0', '2019-10-24 21:02:16'); -INSERT INTO `job` VALUES (10, '产品经理', b'0', '2019-03-29 14:55:51', 4, 2, b'0', '2019-10-24 21:02:16'); -INSERT INTO `job` VALUES (11, '全栈开发', b'1', '2019-03-31 13:39:30', 6, 2, b'0', '2019-10-24 21:02:16'); -INSERT INTO `job` VALUES (12, '软件测试', b'1', '2019-03-31 13:39:43', 5, 2, b'0', '2019-10-24 21:02:16'); +INSERT INTO `job` VALUES (2, '董事长秘书', b'1', 2, 1, '2019-03-29 14:01:30'); +INSERT INTO `job` VALUES (8, '人事专员', b'1', 3, 11, '2019-03-29 14:52:28'); +INSERT INTO `job` VALUES (10, '产品经理', b'0', 4, 2, '2019-03-29 14:55:51'); +INSERT INTO `job` VALUES (11, '全栈开发', b'1', 6, 2, '2019-03-31 13:39:30'); +INSERT INTO `job` VALUES (12, '软件测试', b'1', 5, 2, '2019-03-31 13:39:43'); -- ---------------------------- -- Table structure for local_storage @@ -195,10 +186,8 @@ CREATE TABLE `local_storage` ( `size` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '大小', `operate` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作人', `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', - `update_time` datetime NULL DEFAULT NULL COMMENT '修改日期', - `is_delete` bit(1) NULL DEFAULT b'0', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Table structure for log @@ -218,7 +207,7 @@ CREATE TABLE `log` ( `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `browser` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 14909 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 15617 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Table structure for menu @@ -226,7 +215,6 @@ CREATE TABLE `log` ( DROP TABLE IF EXISTS `menu`; CREATE TABLE `menu` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', `i_frame` bit(1) 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 '组件', @@ -237,48 +225,46 @@ CREATE TABLE `menu` ( `cache` bit(1) NULL DEFAULT b'0', `hidden` bit(1) NULL DEFAULT b'0', `component_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '-', - `is_delete` bit(1) NULL DEFAULT b'0', - `update_time` datetime NULL DEFAULT NULL, + `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', PRIMARY KEY (`id`) USING BTREE, INDEX `FKqcf9gem97gqa5qjm4d3elcqt5`(`pid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 42 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 43 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', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (2, '2018-12-18 15:14:44', b'0', '用户管理', 'system/user/index', 1, 2, 'peoples', 'user', b'0', b'0', 'User', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (3, '2018-12-18 15:16:07', b'0', '角色管理', 'system/role/index', 1, 3, 'role', 'role', b'0', b'0', 'Role', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (4, '2018-12-18 15:16:45', b'0', '权限管理', 'system/permission/index', 1, 4, 'permission', 'permission', b'0', b'0', 'Permission', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (5, '2018-12-18 15:17:28', b'0', '菜单管理', 'system/menu/index', 1, 5, 'menu', 'menu', b'0', b'0', 'Menu', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (6, '2018-12-18 15:17:48', b'0', '系统监控', NULL, 0, 10, 'monitor', 'monitor', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (7, '2018-12-18 15:18:26', b'0', '操作日志', 'monitor/log/index', 6, 11, 'log', 'logs', b'0', b'0', 'Log', b'0', '2019-10-26 19:17:04'); -INSERT INTO `menu` VALUES (8, '2018-12-18 15:19:01', b'0', '系统缓存', 'monitor/redis/index', 6, 13, 'redis', 'redis', b'0', b'0', 'Redis', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (9, '2018-12-18 15:19:34', b'0', 'SQL监控', 'monitor/sql/index', 6, 14, 'sqlMonitor', 'druid', b'0', b'0', 'Sql', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (10, '2018-12-19 13:38:16', b'0', '组件管理', NULL, 0, 50, 'zujian', 'components', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (11, '2018-12-19 13:38:49', b'0', '图标库', 'components/IconSelect', 10, 51, 'icon', 'icon', b'0', b'0', 'Icons', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (14, '2018-12-27 10:13:09', b'0', '邮件工具', 'tools/email/index', 36, 24, 'email', 'email', b'0', b'0', 'Email', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (15, '2018-12-27 11:58:25', b'0', '富文本', 'components/Editor', 10, 52, 'fwb', 'tinymce', b'0', b'0', 'Editor', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (16, '2018-12-28 09:36:53', b'0', '图床管理', 'tools/picture/index', 36, 25, 'image', 'pictures', b'0', b'0', 'Pictures', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (17, '2018-12-28 15:09:49', b'1', '项目地址', '', 0, 0, 'github', 'https://github.com/elunez/eladmin', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (18, '2018-12-31 11:12:15', b'0', '存储管理', 'tools/storage/index', 36, 23, 'qiniu', 'storage', b'0', b'0', 'Storage', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (19, '2018-12-31 14:52:38', b'0', '支付宝工具', 'tools/aliPay/index', 36, 27, 'alipay', 'aliPay', b'0', b'0', 'AliPay', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (21, '2019-01-04 16:22:03', b'0', '多级菜单', '', 0, 900, 'menu', 'nested', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (22, '2019-01-04 16:23:29', b'0', '二级菜单1', 'nested/menu1/index', 21, 999, 'menu', 'menu1', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (23, '2019-01-04 16:23:57', b'0', '二级菜单2', 'nested/menu2/index', 21, 999, 'menu', 'menu2', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (24, '2019-01-04 16:24:48', b'0', '三级菜单1', 'nested/menu1/menu1-1', 22, 999, 'menu', 'menu1-1', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (27, '2019-01-07 17:27:32', b'0', '三级菜单2', 'nested/menu1/menu1-2', 22, 999, 'menu', 'menu1-2', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (28, '2019-01-07 20:34:40', b'0', '定时任务', 'system/timing/index', 36, 21, 'timing', 'timing', b'0', b'0', 'Timing', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (30, '2019-01-11 15:45:55', b'0', '代码生成', 'generator/index', 36, 22, 'dev', 'generator', b'0', b'0', 'GeneratorIndex', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (32, '2019-01-13 13:49:03', b'0', '异常日志', 'monitor/log/errorLog', 6, 12, 'error', 'errorLog', b'0', b'0', 'ErrorLog', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (33, '2019-03-08 13:46:44', b'0', 'Markdown', 'components/MarkDown', 10, 53, 'markdown', 'markdown', b'0', b'0', 'Markdown', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (34, '2019-03-08 15:49:40', b'0', 'Yaml编辑器', 'components/YamlEdit', 10, 54, 'dev', 'yaml', b'0', b'0', 'YamlEdit', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (35, '2019-03-25 09:46:00', b'0', '部门管理', 'system/dept/index', 1, 6, 'dept', 'dept', b'0', b'0', 'Dept', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (36, '2019-03-29 10:57:35', b'0', '系统工具', '', 0, 20, 'sys-tools', 'sys-tools', b'0', b'0', NULL, b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (37, '2019-03-29 13:51:18', b'0', '岗位管理', 'system/job/index', 1, 7, 'Steve-Jobs', 'job', b'0', b'0', 'Job', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (38, '2019-03-29 19:57:53', b'0', '接口文档', 'tools/swagger/index', 36, 26, 'swagger', 'swagger2', b'0', b'0', 'Swagger', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (39, '2019-04-10 11:49:04', b'0', '字典管理', 'system/dict/index', 1, 8, 'dictionary', 'dict', b'0', b'0', 'Dict', b'0', '2019-10-24 21:02:16'); -INSERT INTO `menu` VALUES (41, '2019-10-26 22:08:43', b'0', '在线用户', 'monitor/online/index', 6, 10, 'Steve-Jobs', 'online', b'0', b'0', 'OnlineUser', b'0', '2019-10-26 22:11:28'); +INSERT INTO `menu` VALUES (1, b'0', '系统管理', NULL, 0, 1, 'system', 'system', b'0', b'0', NULL, '2018-12-18 15:11:29'); +INSERT INTO `menu` VALUES (2, b'0', '用户管理', 'system/user/index', 1, 2, 'peoples', 'user', b'0', b'0', 'User', '2018-12-18 15:14:44'); +INSERT INTO `menu` VALUES (3, b'0', '角色管理', 'system/role/index', 1, 3, 'role', 'role', b'0', b'0', 'Role', '2018-12-18 15:16:07'); +INSERT INTO `menu` VALUES (4, b'0', '权限管理', 'system/permission/index', 1, 4, 'permission', 'permission', b'0', b'0', 'Permission', '2018-12-18 15:16:45'); +INSERT INTO `menu` VALUES (5, b'0', '菜单管理', 'system/menu/index', 1, 5, 'menu', 'menu', b'0', b'0', 'Menu', '2018-12-18 15:17:28'); +INSERT INTO `menu` VALUES (6, b'0', '系统监控', NULL, 0, 10, 'monitor', 'monitor', b'0', b'0', NULL, '2018-12-18 15:17:48'); +INSERT INTO `menu` VALUES (7, b'0', '操作日志', 'monitor/log/index', 6, 11, 'log', 'logs', b'0', b'0', 'Log', '2018-12-18 15:18:26'); +INSERT INTO `menu` VALUES (8, b'0', '系统缓存', 'monitor/redis/index', 6, 13, 'redis', 'redis', b'0', b'0', 'Redis', '2018-12-18 15:19:01'); +INSERT INTO `menu` VALUES (9, b'0', 'SQL监控', 'monitor/sql/index', 6, 14, 'sqlMonitor', 'druid', b'0', b'0', 'Sql', '2018-12-18 15:19:34'); +INSERT INTO `menu` VALUES (10, b'0', '组件管理', NULL, 0, 50, 'zujian', 'components', b'0', b'0', NULL, '2018-12-19 13:38:16'); +INSERT INTO `menu` VALUES (11, b'0', '图标库', 'components/IconSelect', 10, 51, 'icon', 'icon', b'0', b'0', 'Icons', '2018-12-19 13:38:49'); +INSERT INTO `menu` VALUES (14, b'0', '邮件工具', 'tools/email/index', 36, 24, 'email', 'email', b'0', b'0', 'Email', '2018-12-27 10:13:09'); +INSERT INTO `menu` VALUES (15, b'0', '富文本', 'components/Editor', 10, 52, 'fwb', 'tinymce', b'0', b'0', 'Editor', '2018-12-27 11:58:25'); +INSERT INTO `menu` VALUES (16, b'0', '图床管理', 'tools/picture/index', 36, 25, 'image', 'pictures', b'0', b'0', 'Pictures', '2018-12-28 09:36:53'); +INSERT INTO `menu` VALUES (18, b'0', '存储管理', 'tools/storage/index', 36, 23, 'qiniu', 'storage', b'0', b'0', 'Storage', '2018-12-31 11:12:15'); +INSERT INTO `menu` VALUES (19, b'0', '支付宝工具', 'tools/aliPay/index', 36, 27, 'alipay', 'aliPay', b'0', b'0', 'AliPay', '2018-12-31 14:52:38'); +INSERT INTO `menu` VALUES (21, b'0', '多级菜单', '', 0, 900, 'menu', 'nested', b'0', b'1', NULL, '2019-01-04 16:22:03'); +INSERT INTO `menu` VALUES (22, b'0', '二级菜单1', 'nested/menu1/index', 21, 999, 'menu', 'menu1', b'0', b'0', NULL, '2019-01-04 16:23:29'); +INSERT INTO `menu` VALUES (23, b'0', '二级菜单2', 'nested/menu2/index', 21, 999, 'menu', 'menu2', b'0', b'0', NULL, '2019-01-04 16:23:57'); +INSERT INTO `menu` VALUES (24, b'0', '三级菜单1', 'nested/menu1/menu1-1', 22, 999, 'menu', 'menu1-1', b'0', b'0', NULL, '2019-01-04 16:24:48'); +INSERT INTO `menu` VALUES (27, b'0', '三级菜单2', 'nested/menu1/menu1-2', 22, 999, 'menu', 'menu1-2', b'0', b'0', NULL, '2019-01-07 17:27:32'); +INSERT INTO `menu` VALUES (28, b'0', '定时任务', 'system/timing/index', 36, 21, 'timing', 'timing', b'0', b'0', 'Timing', '2019-01-07 20:34:40'); +INSERT INTO `menu` VALUES (30, b'0', '代码生成', 'generator/index', 36, 22, 'dev', 'generator', b'0', b'0', 'GeneratorIndex', '2019-01-11 15:45:55'); +INSERT INTO `menu` VALUES (32, b'0', '异常日志', 'monitor/log/errorLog', 6, 12, 'error', 'errorLog', b'0', b'0', 'ErrorLog', '2019-01-13 13:49:03'); +INSERT INTO `menu` VALUES (33, b'0', 'Markdown', 'components/MarkDown', 10, 53, 'markdown', 'markdown', b'0', b'0', 'Markdown', '2019-03-08 13:46:44'); +INSERT INTO `menu` VALUES (34, b'0', 'Yaml编辑器', 'components/YamlEdit', 10, 54, 'dev', 'yaml', b'0', b'0', 'YamlEdit', '2019-03-08 15:49:40'); +INSERT INTO `menu` VALUES (35, b'0', '部门管理', 'system/dept/index', 1, 6, 'dept', 'dept', b'0', b'0', 'Dept', '2019-03-25 09:46:00'); +INSERT INTO `menu` VALUES (36, b'0', '系统工具', '', 0, 20, 'sys-tools', 'sys-tools', b'0', b'0', NULL, '2019-03-29 10:57:35'); +INSERT INTO `menu` VALUES (37, b'0', '岗位管理', 'system/job/index', 1, 7, 'Steve-Jobs', 'job', b'0', b'0', 'Job', '2019-03-29 13:51:18'); +INSERT INTO `menu` VALUES (38, b'0', '接口文档', 'tools/swagger/index', 36, 26, 'swagger', 'swagger2', b'0', b'0', 'Swagger', '2019-03-29 19:57:53'); +INSERT INTO `menu` VALUES (39, b'0', '字典管理', 'system/dict/index', 1, 8, 'dictionary', 'dict', b'0', b'0', 'Dict', '2019-04-10 11:49:04'); +INSERT INTO `menu` VALUES (41, b'0', '在线用户', 'monitor/online/index', 6, 10, 'Steve-Jobs', 'online', b'0', b'0', 'OnlineUser', '2019-10-26 22:08:43'); -- ---------------------------- -- Table structure for permission @@ -287,70 +273,68 @@ DROP TABLE IF EXISTS `permission`; CREATE TABLE `permission` ( `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 '上级权限', - `is_delete` bit(1) NULL DEFAULT b'0', - `update_time` datetime NULL DEFAULT NULL, + `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 61 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 60 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of permission -- ---------------------------- -INSERT INTO `permission` VALUES (1, '超级管理员', '2018-12-03 12:27:48', 'ADMIN', 0, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (2, '用户管理', '2018-12-03 12:28:19', 'USER_ALL', 0, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (3, '用户查询', '2018-12-03 12:31:35', 'USER_SELECT', 2, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (4, '用户创建', '2018-12-03 12:31:35', 'USER_CREATE', 2, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (5, '用户编辑', '2018-12-03 12:31:35', 'USER_EDIT', 2, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (6, '用户删除', '2018-12-03 12:31:35', 'USER_DELETE', 2, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (7, '角色管理', '2018-12-03 12:28:19', 'ROLES_ALL', 0, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (8, '角色查询', '2018-12-03 12:31:35', 'ROLES_SELECT', 7, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (10, '角色创建', '2018-12-09 20:10:16', 'ROLES_CREATE', 7, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (11, '角色编辑', '2018-12-09 20:10:42', 'ROLES_EDIT', 7, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (12, '角色删除', '2018-12-09 20:11:07', 'ROLES_DELETE', 7, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (13, '权限管理', '2018-12-09 20:11:37', 'PERMISSION_ALL', 0, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (14, '权限查询', '2018-12-09 20:11:55', 'PERMISSION_SELECT', 13, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (15, '权限创建', '2018-12-09 20:14:10', 'PERMISSION_CREATE', 13, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (16, '权限编辑', '2018-12-09 20:15:44', 'PERMISSION_EDIT', 13, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (17, '权限删除', '2018-12-09 20:15:59', 'PERMISSION_DELETE', 13, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (18, '缓存管理', '2018-12-17 13:53:25', 'REDIS_ALL', 0, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (20, '缓存查询', '2018-12-17 13:54:07', 'REDIS_SELECT', 18, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (22, '缓存删除', '2018-12-17 13:55:04', 'REDIS_DELETE', 18, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (23, '图床管理', '2018-12-27 20:31:49', 'PICTURE_ALL', 0, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (24, '查询图片', '2018-12-27 20:32:04', 'PICTURE_SELECT', 23, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (25, '上传图片', '2018-12-27 20:32:24', 'PICTURE_UPLOAD', 23, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (26, '删除图片', '2018-12-27 20:32:45', 'PICTURE_DELETE', 23, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (29, '菜单管理', '2018-12-28 17:34:31', 'MENU_ALL', 0, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (30, '菜单查询', '2018-12-28 17:34:41', 'MENU_SELECT', 29, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (31, '菜单创建', '2018-12-28 17:34:52', 'MENU_CREATE', 29, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (32, '菜单编辑', '2018-12-28 17:35:20', 'MENU_EDIT', 29, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (33, '菜单删除', '2018-12-28 17:35:29', 'MENU_DELETE', 29, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (35, '定时任务管理', '2019-01-08 14:59:57', 'JOB_ALL', 0, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (36, '任务查询', '2019-01-08 15:00:09', 'JOB_SELECT', 35, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (37, '任务创建', '2019-01-08 15:00:20', 'JOB_CREATE', 35, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (38, '任务编辑', '2019-01-08 15:00:33', 'JOB_EDIT', 35, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (39, '任务删除', '2019-01-08 15:01:13', 'JOB_DELETE', 35, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (40, '部门管理', '2019-03-29 17:06:55', 'DEPT_ALL', 0, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (41, '部门查询', '2019-03-29 17:07:09', 'DEPT_SELECT', 40, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (42, '部门创建', '2019-03-29 17:07:29', 'DEPT_CREATE', 40, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (43, '部门编辑', '2019-03-29 17:07:52', 'DEPT_EDIT', 40, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (44, '部门删除', '2019-03-29 17:08:14', 'DEPT_DELETE', 40, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (45, '岗位管理', '2019-03-29 17:08:52', 'USERJOB_ALL', 0, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (46, '岗位查询', '2019-03-29 17:10:27', 'USERJOB_SELECT', 45, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (47, '岗位创建', '2019-03-29 17:10:55', 'USERJOB_CREATE', 45, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (48, '岗位编辑', '2019-03-29 17:11:08', 'USERJOB_EDIT', 45, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (49, '岗位删除', '2019-03-29 17:11:19', 'USERJOB_DELETE', 45, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (50, '字典管理', '2019-04-10 16:24:51', 'DICT_ALL', 0, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (51, '字典查询', '2019-04-10 16:25:16', 'DICT_SELECT', 50, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (52, '字典创建', '2019-04-10 16:25:29', 'DICT_CREATE', 50, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (53, '字典编辑', '2019-04-10 16:27:19', 'DICT_EDIT', 50, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (54, '字典删除', '2019-04-10 16:27:30', 'DICT_DELETE', 50, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (55, '文件管理', '2019-09-08 12:31:54', 'LOCALSTORAGE_ALL', 0, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (56, '文件搜索', '2019-09-08 12:40:53', 'LOCALSTORAGE_SELECT', 55, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (57, '文件上传', '2019-09-08 12:41:05', 'LOCALSTORAGE_CREATE', 55, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (58, '文件编辑', '2019-09-08 12:41:19', 'LOCALSTORAGE_EDIT', 55, b'0', '2019-10-24 21:00:50'); -INSERT INTO `permission` VALUES (59, '文件删除', '2019-09-08 12:41:29', 'LOCALSTORAGE_DELETE', 55, b'0', '2019-10-24 21:00:50'); +INSERT INTO `permission` VALUES (1, '管理员', 'ADMIN', 0, '2018-12-03 12:27:48'); +INSERT INTO `permission` VALUES (2, '用户管理', 'USER_ALL', 0, '2018-12-03 12:28:19'); +INSERT INTO `permission` VALUES (3, '用户查询', 'USER_SELECT', 2, '2018-12-03 12:31:35'); +INSERT INTO `permission` VALUES (4, '用户创建', 'USER_CREATE', 2, '2018-12-03 12:31:35'); +INSERT INTO `permission` VALUES (5, '用户编辑', 'USER_EDIT', 2, '2018-12-03 12:31:35'); +INSERT INTO `permission` VALUES (6, '用户删除', 'USER_DELETE', 2, '2018-12-03 12:31:35'); +INSERT INTO `permission` VALUES (7, '角色管理', 'ROLES_ALL', 0, '2018-12-03 12:28:19'); +INSERT INTO `permission` VALUES (8, '角色查询', 'ROLES_SELECT', 7, '2018-12-03 12:31:35'); +INSERT INTO `permission` VALUES (10, '角色创建', 'ROLES_CREATE', 7, '2018-12-09 20:10:16'); +INSERT INTO `permission` VALUES (11, '角色编辑', 'ROLES_EDIT', 7, '2018-12-09 20:10:42'); +INSERT INTO `permission` VALUES (12, '角色删除', 'ROLES_DELETE', 7, '2018-12-09 20:11:07'); +INSERT INTO `permission` VALUES (13, '权限管理', 'PERMISSION_ALL', 0, '2018-12-09 20:11:37'); +INSERT INTO `permission` VALUES (14, '权限查询', 'PERMISSION_SELECT', 13, '2018-12-09 20:11:55'); +INSERT INTO `permission` VALUES (15, '权限创建', 'PERMISSION_CREATE', 13, '2018-12-09 20:14:10'); +INSERT INTO `permission` VALUES (16, '权限编辑', 'PERMISSION_EDIT', 13, '2018-12-09 20:15:44'); +INSERT INTO `permission` VALUES (17, '权限删除', 'PERMISSION_DELETE', 13, '2018-12-09 20:15:59'); +INSERT INTO `permission` VALUES (18, '缓存管理', 'REDIS_ALL', 0, '2018-12-17 13:53:25'); +INSERT INTO `permission` VALUES (20, '缓存查询', 'REDIS_SELECT', 18, '2018-12-17 13:54:07'); +INSERT INTO `permission` VALUES (22, '缓存删除', 'REDIS_DELETE', 18, '2018-12-17 13:55:04'); +INSERT INTO `permission` VALUES (23, '图床管理', 'PICTURE_ALL', 0, '2018-12-27 20:31:49'); +INSERT INTO `permission` VALUES (24, '查询图片', 'PICTURE_SELECT', 23, '2018-12-27 20:32:04'); +INSERT INTO `permission` VALUES (25, '上传图片', 'PICTURE_UPLOAD', 23, '2018-12-27 20:32:24'); +INSERT INTO `permission` VALUES (26, '删除图片', 'PICTURE_DELETE', 23, '2018-12-27 20:32:45'); +INSERT INTO `permission` VALUES (29, '菜单管理', 'MENU_ALL', 0, '2018-12-28 17:34:31'); +INSERT INTO `permission` VALUES (30, '菜单查询', 'MENU_SELECT', 29, '2018-12-28 17:34:41'); +INSERT INTO `permission` VALUES (31, '菜单创建', 'MENU_CREATE', 29, '2018-12-28 17:34:52'); +INSERT INTO `permission` VALUES (32, '菜单编辑', 'MENU_EDIT', 29, '2018-12-28 17:35:20'); +INSERT INTO `permission` VALUES (33, '菜单删除', 'MENU_DELETE', 29, '2018-12-28 17:35:29'); +INSERT INTO `permission` VALUES (35, '定时任务', 'JOB_ALL', 0, '2019-01-08 14:59:57'); +INSERT INTO `permission` VALUES (36, '任务查询', 'JOB_SELECT', 35, '2019-01-08 15:00:09'); +INSERT INTO `permission` VALUES (37, '任务创建', 'JOB_CREATE', 35, '2019-01-08 15:00:20'); +INSERT INTO `permission` VALUES (38, '任务编辑', 'JOB_EDIT', 35, '2019-01-08 15:00:33'); +INSERT INTO `permission` VALUES (39, '任务删除', 'JOB_DELETE', 35, '2019-01-08 15:01:13'); +INSERT INTO `permission` VALUES (40, '部门管理', 'DEPT_ALL', 0, '2019-03-29 17:06:55'); +INSERT INTO `permission` VALUES (41, '部门查询', 'DEPT_SELECT', 40, '2019-03-29 17:07:09'); +INSERT INTO `permission` VALUES (42, '部门创建', 'DEPT_CREATE', 40, '2019-03-29 17:07:29'); +INSERT INTO `permission` VALUES (43, '部门编辑', 'DEPT_EDIT', 40, '2019-03-29 17:07:52'); +INSERT INTO `permission` VALUES (44, '部门删除', 'DEPT_DELETE', 40, '2019-03-29 17:08:14'); +INSERT INTO `permission` VALUES (45, '岗位管理', 'USERJOB_ALL', 0, '2019-03-29 17:08:52'); +INSERT INTO `permission` VALUES (46, '岗位查询', 'USERJOB_SELECT', 45, '2019-03-29 17:10:27'); +INSERT INTO `permission` VALUES (47, '岗位创建', 'USERJOB_CREATE', 45, '2019-03-29 17:10:55'); +INSERT INTO `permission` VALUES (48, '岗位编辑', 'USERJOB_EDIT', 45, '2019-03-29 17:11:08'); +INSERT INTO `permission` VALUES (49, '岗位删除', 'USERJOB_DELETE', 45, '2019-03-29 17:11:19'); +INSERT INTO `permission` VALUES (50, '字典管理', 'DICT_ALL', 0, '2019-04-10 16:24:51'); +INSERT INTO `permission` VALUES (51, '字典查询', 'DICT_SELECT', 50, '2019-04-10 16:25:16'); +INSERT INTO `permission` VALUES (52, '字典创建', 'DICT_CREATE', 50, '2019-04-10 16:25:29'); +INSERT INTO `permission` VALUES (53, '字典编辑', 'DICT_EDIT', 50, '2019-04-10 16:27:19'); +INSERT INTO `permission` VALUES (54, '字典删除', 'DICT_DELETE', 50, '2019-04-10 16:27:30'); +INSERT INTO `permission` VALUES (55, '文件管理', 'LOCALSTORAGE_ALL', 0, '2019-09-08 12:31:54'); +INSERT INTO `permission` VALUES (56, '文件搜索', 'LOCALSTORAGE_SELECT', 55, '2019-09-08 12:40:53'); +INSERT INTO `permission` VALUES (57, '文件上传', 'LOCALSTORAGE_CREATE', 55, '2019-09-08 12:41:05'); +INSERT INTO `permission` VALUES (58, '文件编辑', 'LOCALSTORAGE_EDIT', 55, '2019-09-08 12:41:19'); +INSERT INTO `permission` VALUES (59, '文件删除', 'LOCALSTORAGE_DELETE', 55, '2019-09-08 12:41:29'); -- ---------------------------- -- Table structure for picture @@ -368,7 +352,7 @@ CREATE TABLE `picture` ( `width` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片宽度', `md5code` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 6 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; -- ---------------------------- -- Table structure for qiniu_config @@ -399,7 +383,7 @@ CREATE TABLE `qiniu_content` ( `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件url', `suffix` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Table structure for quartz_job @@ -415,17 +399,15 @@ CREATE TABLE `quartz_job` ( `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 '备注', `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', - `is_delete` bit(1) NULL DEFAULT b'0', - `update_time` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- 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', b'0', NULL); -INSERT INTO `quartz_job` VALUES (2, 'testTask', '0/5 * * * * ?', b'1', '测试1', 'run1', 'test', '带参测试,多参使用json', '2019-08-22 14:08:29', b'0', NULL); -INSERT INTO `quartz_job` VALUES (3, 'testTask', '0/5 * * * * ?', b'1', '测试', 'run', '', '不带参测试', '2019-09-26 16:44:39', b'0', '2019-10-26 22:36:04'); +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-08-22 14:08:29'); +INSERT INTO `quartz_job` VALUES (3, 'testTask', '0/5 * * * * ?', b'1', '测试', 'run', '', '不带参测试', '2019-09-26 16:44:39'); -- ---------------------------- -- Table structure for quartz_log @@ -443,15 +425,7 @@ CREATE TABLE `quartz_log` ( `params` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `time` bigint(20) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of quartz_log --- ---------------------------- -INSERT INTO `quartz_log` VALUES (1, 'testTask', '2019-10-24 14:23:41', '0/5 * * * * ?', NULL, b'1', '测试1', 'run1', 'test', 3); -INSERT INTO `quartz_log` VALUES (2, 'testTask', '2019-10-24 14:23:46', '0/5 * * * * ?', NULL, b'1', '测试', 'run', '', 0); -INSERT INTO `quartz_log` VALUES (3, 'testTask', '2019-10-26 22:35:57', '0/5 * * * * ?', NULL, b'1', '测试', 'run', '', 2); -INSERT INTO `quartz_log` VALUES (4, 'testTask', '2019-10-26 22:36:00', '0/5 * * * * ?', NULL, b'1', '测试', 'run', '', 1); +) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Table structure for role @@ -459,22 +433,20 @@ INSERT INTO `quartz_log` VALUES (4, 'testTask', '2019-10-26 22:36:00', '0/5 * * DROP TABLE IF EXISTS `role`; CREATE TABLE `role` ( `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 '备注', `data_scope` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `level` int(255) NULL DEFAULT NULL, - `is_delete` bit(1) NULL DEFAULT b'0', - `update_time` datetime NULL DEFAULT NULL, + `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of role -- ---------------------------- -INSERT INTO `role` VALUES (1, '2018-11-23 11:04:37', '超级管理员', '·', '全部', 1, b'0', '2019-10-26 22:09:18'); -INSERT INTO `role` VALUES (2, '2018-11-23 13:09:06', '普通用户', '用于测试菜单与权限', '自定义', 3, b'0', '2019-10-24 21:02:16'); -INSERT INTO `role` VALUES (4, '2019-05-13 14:16:15', '普通管理员', '普通管理员级别为2,使用该角色新增用户时只能赋予比普通管理员级别低的角色', '自定义', 2, b'0', '2019-10-24 21:02:16'); +INSERT INTO `role` VALUES (1, '超级管理员', '·', '全部', 1, '2018-11-23 11:04:37'); +INSERT INTO `role` VALUES (2, '普通用户', '用于测试菜单与权限', '自定义', 3, '2018-11-23 13:09:06'); +INSERT INTO `role` VALUES (4, '普通管理员', '普通管理员级别为2,使用该角色新增用户时只能赋予比普通管理员级别低的角色', '自定义', 2, '2019-05-13 14:16:15'); -- ---------------------------- -- Table structure for roles_depts @@ -528,7 +500,6 @@ INSERT INTO `roles_menus` VALUES (11, 1); INSERT INTO `roles_menus` VALUES (14, 1); INSERT INTO `roles_menus` VALUES (15, 1); INSERT INTO `roles_menus` VALUES (16, 1); -INSERT INTO `roles_menus` VALUES (17, 1); INSERT INTO `roles_menus` VALUES (18, 1); INSERT INTO `roles_menus` VALUES (19, 1); INSERT INTO `roles_menus` VALUES (21, 1); @@ -560,7 +531,6 @@ INSERT INTO `roles_menus` VALUES (11, 2); INSERT INTO `roles_menus` VALUES (14, 2); INSERT INTO `roles_menus` VALUES (15, 2); INSERT INTO `roles_menus` VALUES (16, 2); -INSERT INTO `roles_menus` VALUES (17, 2); INSERT INTO `roles_menus` VALUES (18, 2); INSERT INTO `roles_menus` VALUES (19, 2); INSERT INTO `roles_menus` VALUES (21, 2); @@ -621,17 +591,15 @@ DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `avatar_id` bigint(20) 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 '最后修改密码的日期', `dept_id` bigint(20) NULL DEFAULT NULL, `phone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `job_id` bigint(20) NULL DEFAULT NULL, - `is_delete` bit(1) NULL DEFAULT b'0', - `update_time` datetime NULL DEFAULT NULL, + `create_time` datetime 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, @@ -641,14 +609,14 @@ CREATE TABLE `user` ( CONSTRAINT `FK5rwmryny6jthaaxkogownknqp` FOREIGN KEY (`dept_id`) REFERENCES `dept` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `FKfftoc2abhot8f2wu6cl9a5iky` FOREIGN KEY (`job_id`) REFERENCES `job` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `FKpq2dhypk2qgt68nauh2by22jb` FOREIGN KEY (`avatar_id`) REFERENCES `user_avatar` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 7 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; -- ---------------------------- -- Records of user -- ---------------------------- -INSERT INTO `user` VALUES (1, NULL, '2018-08-23 09:11:56', 'admin@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'admin', '2019-05-18 17:34:21', 2, '18888888888', 11, b'0', '2019-10-24 20:58:48'); -INSERT INTO `user` VALUES (3, NULL, '2018-12-27 20:05:26', 'test@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'test', '2019-04-01 09:15:24', 2, '17777777777', 12, b'0', '2019-10-24 20:58:46'); -INSERT INTO `user` VALUES (5, NULL, '2019-04-02 10:07:12', 'hr@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'hr', NULL, 11, '15555555555', 8, b'0', '2019-10-24 20:45:51'); +INSERT INTO `user` VALUES (1, NULL, 'admin@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'admin', 2, '18888888888', 11, '2018-08-23 09:11:56', '2019-05-18 17:34:21'); +INSERT INTO `user` VALUES (3, NULL, 'test@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'test', 2, '17777777777', 12, '2018-12-27 20:05:26', '2019-04-01 09:15:24'); +INSERT INTO `user` VALUES (5, NULL, 'hr@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'hr', 11, '15555555555', 8, '2019-04-02 10:07:12', '2019-10-27 20:32:11'); -- ---------------------------- -- Table structure for user_avatar @@ -660,8 +628,6 @@ CREATE TABLE `user_avatar` ( `path` 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, `create_time` datetime NULL DEFAULT NULL, - `is_delete` bit(1) NULL DEFAULT b'0', - `update_time` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; @@ -713,6 +679,7 @@ CREATE TABLE `visits` ( `week_day` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `UK_11aksgq87euk9bcyeesfs4vtp`(`date`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 103 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 106 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; + SET FOREIGN_KEY_CHECKS = 1; From bb5cc6f6ce63eff1612a9247af3da05e26c68e13 Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Sun, 27 Oct 2019 21:38:47 +0800 Subject: [PATCH 12/25] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/security/rest/AuthenticationController.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java index 0c4a243c..65973ce1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java @@ -18,6 +18,7 @@ import me.zhengjie.modules.security.utils.JwtTokenUtil; import me.zhengjie.utils.SecurityUtils; import me.zhengjie.utils.StringUtils; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.authentication.AccountExpiredException; @@ -37,6 +38,9 @@ import javax.servlet.http.HttpServletRequest; @Api(tags = "系统:系统授权接口") public class AuthenticationController { + @Value("${jwt.online}") + private String onlineKey; + private final JwtTokenUtil jwtTokenUtil; private final RedisService redisService; @@ -100,7 +104,7 @@ public class AuthenticationController { captcha.setLen(2); // 获取运算的结果:5 String result = captcha.text(); - String uuid = IdUtil.simpleUUID(); + String uuid = onlineKey + IdUtil.simpleUUID(); redisService.saveCode(uuid,result); return new ImgResult(captcha.toBase64(),uuid); } From cad0c08c9950dbc7e1dd241bd2b032d14d1e77ec Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Sun, 27 Oct 2019 21:54:19 +0800 Subject: [PATCH 13/25] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/monitor/service/impl/RedisServiceImpl.java | 7 +++++-- .../modules/security/rest/AuthenticationController.java | 6 +++--- .../src/main/resources/config/application-dev.yml | 2 ++ .../src/main/resources/config/application-prod.yml | 2 ++ 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java index 96439220..61675ac4 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java @@ -30,6 +30,9 @@ public class RedisServiceImpl implements RedisService { @Value("${jwt.online}") private String onlineKey; + @Value("${jwt.codeKey}") + private String codeKey; + public RedisServiceImpl(RedisTemplate redisTemplate) { this.redisTemplate = redisTemplate; } @@ -43,7 +46,7 @@ public class RedisServiceImpl implements RedisService { Set keys = redisTemplate.keys(key); for (String s : keys) { // 过滤掉权限的缓存 - if (s.contains("role::loadPermissionByUser") || s.contains("user::loadUserByUsername") || s.contains(onlineKey)) { + if (s.contains("role::loadPermissionByUser") || s.contains("user::loadUserByUsername") || s.contains(onlineKey) || s.contains(codeKey)) { continue; } RedisVo redisVo = new RedisVo(s, Objects.requireNonNull(redisTemplate.opsForValue().get(s)).toString()); @@ -63,7 +66,7 @@ public class RedisServiceImpl implements RedisService { @Override public void deleteAll() { Set keys = redisTemplate.keys( "*"); - redisTemplate.delete(keys.stream().filter(s -> !s.contains(onlineKey)).collect(Collectors.toList())); + redisTemplate.delete(keys.stream().filter(s -> !s.contains(onlineKey)).filter(s -> !s.contains(codeKey)).collect(Collectors.toList())); } @Override diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java index 65973ce1..ef879856 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java @@ -38,8 +38,8 @@ import javax.servlet.http.HttpServletRequest; @Api(tags = "系统:系统授权接口") public class AuthenticationController { - @Value("${jwt.online}") - private String onlineKey; + @Value("${jwt.codeKey}") + private String codeKey; private final JwtTokenUtil jwtTokenUtil; @@ -104,7 +104,7 @@ public class AuthenticationController { captcha.setLen(2); // 获取运算的结果:5 String result = captcha.text(); - String uuid = onlineKey + IdUtil.simpleUUID(); + String uuid = codeKey + IdUtil.simpleUUID(); redisService.saveCode(uuid,result); return new ImgResult(captcha.toBase64(),uuid); } diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index 8ed43b28..d2c26ad3 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -49,6 +49,8 @@ jwt: expiration: 21600000 # 在线用户key online: online-token + # 验证码 + codeKey: code-key #是否允许生成代码,生产环境设置为false generator: diff --git a/eladmin-system/src/main/resources/config/application-prod.yml b/eladmin-system/src/main/resources/config/application-prod.yml index 7c718aa3..5cdd61a1 100644 --- a/eladmin-system/src/main/resources/config/application-prod.yml +++ b/eladmin-system/src/main/resources/config/application-prod.yml @@ -51,6 +51,8 @@ jwt: expiration: 7200000 # 在线用户key online: online-token + # 验证码 + codeKey: code-key #是否允许生成代码,生产环境设置为false generator: From e1366ee41a42632263e22542bfe4e5d4941156ee Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Tue, 29 Oct 2019 11:16:31 +0800 Subject: [PATCH 14/25] =?UTF-8?q?=E8=8F=9C=E5=8D=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/zhengjie/config/RedisConfig.java | 4 +- .../java/me/zhengjie/rest/LogController.java | 6 +- .../modules/monitor/rest/RedisController.java | 6 +- .../quartz/rest/QuartzJobController.java | 14 +- .../zhengjie/modules/system/domain/Menu.java | 12 +- .../zhengjie/modules/system/domain/Role.java | 4 + .../system/repository/MenuRepository.java | 2 +- .../modules/system/rest/DeptController.java | 8 +- .../modules/system/rest/DictController.java | 8 +- .../system/rest/DictDetailController.java | 6 +- .../modules/system/rest/JobController.java | 8 +- .../modules/system/rest/MenuController.java | 12 +- .../system/rest/PermissionController.java | 10 +- .../modules/system/rest/RoleController.java | 16 +- .../modules/system/rest/UserController.java | 10 +- .../modules/system/service/dto/MenuDTO.java | 4 + .../modules/system/service/dto/RoleDTO.java | 2 + .../system/service/impl/MenuServiceImpl.java | 8 +- .../service/impl/PermissionServiceImpl.java | 4 +- .../template/generator/admin/Controller.ftl | 8 +- .../zhengjie/rest/LocalStorageController.java | 8 +- .../me/zhengjie/rest/PictureController.java | 8 +- sql/eladmin.sql | 685 ------------------ 23 files changed, 93 insertions(+), 760 deletions(-) delete mode 100644 sql/eladmin.sql diff --git a/eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java index aea58074..6e2d21ef 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/RedisConfig.java @@ -42,14 +42,14 @@ import java.util.Map; public class RedisConfig extends CachingConfigurerSupport { /** - * 设置 redis 数据默认过期时间,默认1天 + * 设置 redis 数据默认过期时间,默认6小时 * 设置@cacheable 序列化方式 */ @Bean public RedisCacheConfiguration redisCacheConfiguration(){ FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer<>(Object.class); RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig(); - configuration = configuration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(fastJsonRedisSerializer)).entryTtl(Duration.ofDays(1)); + configuration = configuration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(fastJsonRedisSerializer)).entryTtl(Duration.ofHours(6)); return configuration; } diff --git a/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java b/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java index 67312268..670a3d80 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java +++ b/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java @@ -31,7 +31,7 @@ public class LogController { @GetMapping @ApiOperation("日志查询") - @PreAuthorize("hasAnyRole('ADMIN')") + @PreAuthorize("hasAnyRole('admin')") public ResponseEntity getLogs(LogQueryCriteria criteria, Pageable pageable){ criteria.setLogType("INFO"); return new ResponseEntity<>(logService.queryAll(criteria,pageable), HttpStatus.OK); @@ -47,7 +47,7 @@ public class LogController { @GetMapping(value = "/error") @ApiOperation("错误日志查询") - @PreAuthorize("hasAnyRole('ADMIN')") + @PreAuthorize("hasAnyRole('admin')") public ResponseEntity getErrorLogs(LogQueryCriteria criteria, Pageable pageable){ criteria.setLogType("ERROR"); return new ResponseEntity<>(logService.queryAll(criteria,pageable), HttpStatus.OK); @@ -55,7 +55,7 @@ public class LogController { @GetMapping(value = "/error/{id}") @ApiOperation("日志异常详情查询") - @PreAuthorize("hasAnyRole('ADMIN')") + @PreAuthorize("hasAnyRole('admin')") public ResponseEntity getErrorLogs(@PathVariable Long id){ return new ResponseEntity<>(logService.findByErrDetail(id), HttpStatus.OK); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java index 4b0fa348..85eb1bc3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java @@ -29,7 +29,7 @@ public class RedisController { @Log("查询Redis缓存") @GetMapping @ApiOperation("查询Redis缓存") - @PreAuthorize("hasAnyRole('ADMIN','REDIS_ALL','REDIS_SELECT')") + @PreAuthorize("hasAnyRole('admin','REDIS_ALL','REDIS_SELECT')") public ResponseEntity getRedis(String key, Pageable pageable){ return new ResponseEntity<>(redisService.findByKey(key,pageable), HttpStatus.OK); } @@ -37,7 +37,7 @@ public class RedisController { @Log("删除Redis缓存") @DeleteMapping @ApiOperation("删除Redis缓存") - @PreAuthorize("hasAnyRole('ADMIN','REDIS_ALL','REDIS_DELETE')") + @PreAuthorize("hasAnyRole('admin','REDIS_ALL','REDIS_DELETE')") public ResponseEntity delete(@RequestBody RedisVo resources){ redisService.delete(resources.getKey()); return new ResponseEntity(HttpStatus.OK); @@ -46,7 +46,7 @@ public class RedisController { @Log("清空Redis缓存") @DeleteMapping(value = "/all") @ApiOperation("清空Redis缓存") - @PreAuthorize("hasAnyRole('ADMIN','REDIS_ALL','REDIS_DELETE')") + @PreAuthorize("hasAnyRole('admin','REDIS_ALL','REDIS_DELETE')") public ResponseEntity deleteAll(){ redisService.deleteAll(); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java index e8a860d3..08a9eeaf 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java @@ -36,14 +36,14 @@ public class QuartzJobController { @Log("查询定时任务") @ApiOperation("查询定时任务") @GetMapping - @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_SELECT')") + @PreAuthorize("hasAnyRole('admin','JOB_ALL','JOB_SELECT')") public ResponseEntity getJobs(JobQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(quartzJobService.queryAll(criteria,pageable), HttpStatus.OK); } @ApiOperation("查询任务执行日志") @GetMapping(value = "/logs") - @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_SELECT')") + @PreAuthorize("hasAnyRole('admin','JOB_ALL','JOB_SELECT')") public ResponseEntity getJobLogs(JobQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(quartzJobService.queryAllLog(criteria,pageable), HttpStatus.OK); } @@ -51,7 +51,7 @@ public class QuartzJobController { @Log("新增定时任务") @ApiOperation("新增定时任务") @PostMapping - @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_CREATE')") + @PreAuthorize("hasAnyRole('admin','JOB_ALL','JOB_CREATE')") public ResponseEntity create(@Validated @RequestBody QuartzJob resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); @@ -62,7 +62,7 @@ public class QuartzJobController { @Log("修改定时任务") @ApiOperation("修改定时任务") @PutMapping - @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") + @PreAuthorize("hasAnyRole('admin','JOB_ALL','JOB_EDIT')") public ResponseEntity update(@Validated(QuartzJob.Update.class) @RequestBody QuartzJob resources){ quartzJobService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -71,7 +71,7 @@ public class QuartzJobController { @Log("更改定时任务状态") @ApiOperation("更改定时任务状态") @PutMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") + @PreAuthorize("hasAnyRole('admin','JOB_ALL','JOB_EDIT')") public ResponseEntity updateIsPause(@PathVariable Long id){ quartzJobService.updateIsPause(quartzJobService.findById(id)); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -80,7 +80,7 @@ public class QuartzJobController { @Log("执行定时任务") @ApiOperation("执行定时任务") @PutMapping(value = "/exec/{id}") - @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") + @PreAuthorize("hasAnyRole('admin','JOB_ALL','JOB_EDIT')") public ResponseEntity execution(@PathVariable Long id){ quartzJobService.execution(quartzJobService.findById(id)); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -89,7 +89,7 @@ public class QuartzJobController { @Log("删除定时任务") @ApiOperation("删除定时任务") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_DELETE')") + @PreAuthorize("hasAnyRole('admin','JOB_ALL','JOB_DELETE')") public ResponseEntity delete(@PathVariable Long id){ quartzJobService.delete(quartzJobService.findById(id)); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java index 6a0b17b1..e9b4b357 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java @@ -30,15 +30,21 @@ public class Menu{ private String name; @Column(unique = true) - @NotNull - private Long sort; + private Long sort = 999L; - @NotBlank @Column(name = "path") private String path; private String component; + // 类型 + @Column(name = "type") + private Integer type; + + // 权限 + @Column(name = "permission") + private String permission; + @Column(unique = true,name = "component_name") private String componentName; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java index ef33f9d2..51045e51 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java @@ -42,6 +42,10 @@ public class Role{ @Column private String remark; + // 权限 + @Column(name = "permission") + private String permission; + @JsonIgnore @ManyToMany(mappedBy = "roles") private Set users; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java index 829e616c..0d0876be 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java @@ -18,5 +18,5 @@ public interface MenuRepository extends JpaRepository, JpaSpecificat List findByPid(long pid); - LinkedHashSet findByRoles_IdOrderBySortAsc(Long id); + LinkedHashSet findByRoles_IdAndTypeIsNotInOrderBySortAsc(Long id, Integer type); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java index 2f7a32f9..637d6535 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java @@ -40,7 +40,7 @@ public class DeptController { @Log("查询部门") @ApiOperation("查询部门") @GetMapping - @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_SELECT','DEPT_ALL','DEPT_SELECT')") + @PreAuthorize("hasAnyRole('admin','user:all','user:select','DEPT_ALL','DEPT_SELECT')") public ResponseEntity getDepts(DeptQueryCriteria criteria){ // 数据权限 criteria.setIds(dataScope.getDeptIds()); @@ -51,7 +51,7 @@ public class DeptController { @Log("新增部门") @ApiOperation("新增部门") @PostMapping - @PreAuthorize("hasAnyRole('ADMIN','DEPT_ALL','DEPT_CREATE')") + @PreAuthorize("hasAnyRole('admin','DEPT_ALL','DEPT_CREATE')") public ResponseEntity create(@Validated @RequestBody Dept resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); @@ -62,7 +62,7 @@ public class DeptController { @Log("修改部门") @ApiOperation("修改部门") @PutMapping - @PreAuthorize("hasAnyRole('ADMIN','DEPT_ALL','DEPT_EDIT')") + @PreAuthorize("hasAnyRole('admin','DEPT_ALL','DEPT_EDIT')") public ResponseEntity update(@Validated(Dept.Update.class) @RequestBody Dept resources){ deptService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -71,7 +71,7 @@ public class DeptController { @Log("删除部门") @ApiOperation("删除部门") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('ADMIN','DEPT_ALL','DEPT_DELETE')") + @PreAuthorize("hasAnyRole('admin','DEPT_ALL','DEPT_DELETE')") public ResponseEntity delete(@PathVariable Long id){ try { deptService.delete(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java index c2a8b28a..7b309c02 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java @@ -34,7 +34,7 @@ public class DictController { @Log("查询字典") @ApiOperation("查询字典") @GetMapping - @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_SELECT')") + @PreAuthorize("hasAnyRole('admin','DICT_ALL','DICT_SELECT')") public ResponseEntity getDicts(DictQueryCriteria resources, Pageable pageable){ return new ResponseEntity<>(dictService.queryAll(resources,pageable),HttpStatus.OK); } @@ -42,7 +42,7 @@ public class DictController { @Log("新增字典") @ApiOperation("新增字典") @PostMapping - @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_CREATE')") + @PreAuthorize("hasAnyRole('admin','DICT_ALL','DICT_CREATE')") public ResponseEntity create(@Validated @RequestBody Dict resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); @@ -53,7 +53,7 @@ public class DictController { @Log("修改字典") @ApiOperation("修改字典") @PutMapping - @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_EDIT')") + @PreAuthorize("hasAnyRole('admin','DICT_ALL','DICT_EDIT')") public ResponseEntity update(@Validated(Dict.Update.class) @RequestBody Dict resources){ dictService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -62,7 +62,7 @@ public class DictController { @Log("删除字典") @ApiOperation("删除字典") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_DELETE')") + @PreAuthorize("hasAnyRole('admin','DICT_ALL','DICT_DELETE')") public ResponseEntity delete(@PathVariable Long id){ dictService.delete(id); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java index 20214aac..d9d68967 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java @@ -60,7 +60,7 @@ public class DictDetailController { @Log("新增字典详情") @ApiOperation("新增字典详情") @PostMapping - @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_CREATE')") + @PreAuthorize("hasAnyRole('admin','DICT_ALL','DICT_CREATE')") public ResponseEntity create(@Validated @RequestBody DictDetail resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); @@ -71,7 +71,7 @@ public class DictDetailController { @Log("修改字典详情") @ApiOperation("修改字典详情") @PutMapping - @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_EDIT')") + @PreAuthorize("hasAnyRole('admin','DICT_ALL','DICT_EDIT')") public ResponseEntity update(@Validated(DictDetail.Update.class) @RequestBody DictDetail resources){ dictDetailService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -80,7 +80,7 @@ public class DictDetailController { @Log("删除字典详情") @ApiOperation("删除字典详情") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_DELETE')") + @PreAuthorize("hasAnyRole('admin','DICT_ALL','DICT_DELETE')") public ResponseEntity delete(@PathVariable Long id){ dictDetailService.delete(id); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java index 6b1ba897..b7c2788a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java @@ -39,7 +39,7 @@ public class JobController { @Log("查询岗位") @ApiOperation("查询岗位") @GetMapping - @PreAuthorize("hasAnyRole('ADMIN','USERJOB_ALL','USERJOB_SELECT','USER_ALL','USER_SELECT')") + @PreAuthorize("hasAnyRole('admin','USERJOB_ALL','USERJOB_SELECT','user:all','user:select')") public ResponseEntity getJobs(JobQueryCriteria criteria, Pageable pageable){ // 数据权限 @@ -50,7 +50,7 @@ public class JobController { @Log("新增岗位") @ApiOperation("新增岗位") @PostMapping - @PreAuthorize("hasAnyRole('ADMIN','USERJOB_ALL','USERJOB_CREATE')") + @PreAuthorize("hasAnyRole('admin','USERJOB_ALL','USERJOB_CREATE')") public ResponseEntity create(@Validated @RequestBody Job resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); @@ -61,7 +61,7 @@ public class JobController { @Log("修改岗位") @ApiOperation("修改岗位") @PutMapping - @PreAuthorize("hasAnyRole('ADMIN','USERJOB_ALL','USERJOB_EDIT')") + @PreAuthorize("hasAnyRole('admin','USERJOB_ALL','USERJOB_EDIT')") public ResponseEntity update(@Validated(Job.Update.class) @RequestBody Job resources){ jobService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -70,7 +70,7 @@ public class JobController { @Log("删除岗位") @ApiOperation("删除岗位") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('ADMIN','USERJOB_ALL','USERJOB_DELETE')") + @PreAuthorize("hasAnyRole('admin','USERJOB_ALL','USERJOB_DELETE')") public ResponseEntity delete(@PathVariable Long id){ try { jobService.delete(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java index e5070a1b..e9ca1da9 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java @@ -45,7 +45,7 @@ public class MenuController { this.roleService = roleService; } - @ApiOperation("获取菜单树") + @ApiOperation("获取前端所需菜单") @GetMapping(value = "/build") public ResponseEntity buildMenus(){ UserDTO user = userService.findByName(SecurityUtils.getUsername()); @@ -56,7 +56,7 @@ public class MenuController { @ApiOperation("返回全部的菜单") @GetMapping(value = "/tree") - @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_CREATE','MENU_EDIT','ROLES_SELECT','ROLES_ALL')") + @PreAuthorize("hasAnyRole('admin','MENU_ALL','MENU_CREATE','MENU_EDIT','ROLES_SELECT','ROLES_ALL')") public ResponseEntity getMenuTree(){ return new ResponseEntity<>(menuService.getMenuTree(menuService.findByPid(0L)),HttpStatus.OK); } @@ -64,7 +64,7 @@ public class MenuController { @Log("查询菜单") @ApiOperation("查询菜单") @GetMapping - @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_SELECT')") + @PreAuthorize("hasAnyRole('admin','MENU_ALL','MENU_SELECT')") public ResponseEntity getMenus(MenuQueryCriteria criteria){ List menuDTOList = menuService.queryAll(criteria); return new ResponseEntity<>(menuService.buildTree(menuDTOList),HttpStatus.OK); @@ -73,7 +73,7 @@ public class MenuController { @Log("新增菜单") @ApiOperation("新增菜单") @PostMapping - @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_CREATE')") + @PreAuthorize("hasAnyRole('admin','MENU_ALL','MENU_CREATE')") public ResponseEntity create(@Validated @RequestBody Menu resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); @@ -84,7 +84,7 @@ public class MenuController { @Log("修改菜单") @ApiOperation("修改菜单") @PutMapping - @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_EDIT')") + @PreAuthorize("hasAnyRole('admin','MENU_ALL','MENU_EDIT')") public ResponseEntity update(@Validated(Menu.Update.class) @RequestBody Menu resources){ menuService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -93,7 +93,7 @@ public class MenuController { @Log("删除菜单") @ApiOperation("删除菜单") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_DELETE')") + @PreAuthorize("hasAnyRole('admin','MENU_ALL','MENU_DELETE')") public ResponseEntity delete(@PathVariable Long id){ List menuList = menuService.findByPid(id); Set menuSet = new HashSet<>(); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java index fdae182d..a7a7577a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java @@ -40,7 +40,7 @@ public class PermissionController { @ApiOperation("返回全部的权限,新增角色时下拉选择") @GetMapping(value = "/tree") - @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_CREATE','PERMISSION_EDIT','ROLES_SELECT','ROLES_ALL')") + @PreAuthorize("hasAnyRole('admin','PERMISSION_ALL','PERMISSION_CREATE','PERMISSION_EDIT','ROLES_SELECT','ROLES_ALL')") public ResponseEntity getTree(){ return new ResponseEntity<>(permissionService.getPermissionTree(permissionService.findByPid(0L)),HttpStatus.OK); } @@ -48,7 +48,7 @@ public class PermissionController { @Log("查询权限") @ApiOperation("查询权限") @GetMapping - @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_SELECT')") + @PreAuthorize("hasAnyRole('admin','PERMISSION_ALL','PERMISSION_SELECT')") public ResponseEntity getPermissions(PermissionQueryCriteria criteria){ List permissionDTOS = permissionService.queryAll(criteria); return new ResponseEntity<>(permissionService.buildTree(permissionDTOS),HttpStatus.OK); @@ -57,7 +57,7 @@ public class PermissionController { @Log("新增权限") @ApiOperation("新增权限") @PostMapping - @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_CREATE')") + @PreAuthorize("hasAnyRole('admin','PERMISSION_ALL','PERMISSION_CREATE')") public ResponseEntity create(@Validated @RequestBody Permission resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); @@ -68,7 +68,7 @@ public class PermissionController { @Log("修改权限") @ApiOperation("修改权限") @PutMapping - @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_EDIT')") + @PreAuthorize("hasAnyRole('admin','PERMISSION_ALL','PERMISSION_EDIT')") public ResponseEntity update(@Validated(Permission.Update.class) @RequestBody Permission resources){ permissionService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -77,7 +77,7 @@ public class PermissionController { @Log("删除权限") @ApiOperation("删除权限") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_DELETE')") + @PreAuthorize("hasAnyRole('admin','PERMISSION_ALL','PERMISSION_DELETE')") public ResponseEntity delete(@PathVariable Long id){ List permissions = permissionService.findByPid(id); Set permissionSet = new HashSet<>(); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java index 99f59d06..97e54103 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java @@ -42,14 +42,14 @@ public class RoleController { @ApiOperation("获取单个role") @GetMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_SELECT')") + @PreAuthorize("hasAnyRole('admin','ROLES_ALL','ROLES_SELECT')") public ResponseEntity getRoles(@PathVariable Long id){ return new ResponseEntity<>(roleService.findById(id), HttpStatus.OK); } @ApiOperation("返回全部的角色") @GetMapping(value = "/all") - @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','USER_ALL','USER_CREATE','USER_EDIT')") + @PreAuthorize("hasAnyRole('admin','ROLES_ALL','user:all','user:add','user:edit')") public ResponseEntity getAll(@PageableDefault(value = 2000, sort = {"level"}, direction = Sort.Direction.ASC) Pageable pageable){ return new ResponseEntity<>(roleService.queryAll(pageable),HttpStatus.OK); } @@ -57,7 +57,7 @@ public class RoleController { @Log("查询角色") @ApiOperation("查询角色") @GetMapping - @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_SELECT')") + @PreAuthorize("hasAnyRole('admin','ROLES_ALL','ROLES_SELECT')") public ResponseEntity getRoles(RoleQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(roleService.queryAll(criteria,pageable),HttpStatus.OK); } @@ -72,7 +72,7 @@ public class RoleController { @Log("新增角色") @ApiOperation("新增角色") @PostMapping - @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_CREATE')") + @PreAuthorize("hasAnyRole('admin','ROLES_ALL','ROLES_CREATE')") public ResponseEntity create(@Validated @RequestBody Role resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); @@ -83,7 +83,7 @@ public class RoleController { @Log("修改角色") @ApiOperation("修改角色") @PutMapping - @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_EDIT')") + @PreAuthorize("hasAnyRole('admin','ROLES_ALL','ROLES_EDIT')") public ResponseEntity update(@Validated(Role.Update.class) @RequestBody Role resources){ roleService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -92,7 +92,7 @@ public class RoleController { @Log("修改角色权限") @ApiOperation("修改角色权限") @PutMapping(value = "/permission") - @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_EDIT')") + @PreAuthorize("hasAnyRole('admin','ROLES_ALL','ROLES_EDIT')") public ResponseEntity updatePermission(@RequestBody Role resources){ roleService.updatePermission(resources,roleService.findById(resources.getId())); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -101,7 +101,7 @@ public class RoleController { @Log("修改角色菜单") @ApiOperation("修改角色菜单") @PutMapping(value = "/menu") - @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_EDIT')") + @PreAuthorize("hasAnyRole('admin','ROLES_ALL','ROLES_EDIT')") public ResponseEntity updateMenu(@RequestBody Role resources){ roleService.updateMenu(resources,roleService.findById(resources.getId())); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -110,7 +110,7 @@ public class RoleController { @Log("删除角色") @ApiOperation("删除角色") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_DELETE')") + @PreAuthorize("hasAnyRole('admin','ROLES_ALL','ROLES_DELETE')") public ResponseEntity delete(@PathVariable Long id){ try { roleService.delete(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java index 780d44b2..78bddc05 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java @@ -60,7 +60,7 @@ public class UserController { @Log("导出用户数据") @ApiOperation("导出用户数据") @GetMapping(value = "/download") - @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_SELECT')") + @PreAuthorize("hasAnyRole('admin','user:all','user:select')") public void update(HttpServletResponse response, UserQueryCriteria criteria) throws IOException { userService.download(userService.queryAll(criteria), response); } @@ -68,7 +68,7 @@ public class UserController { @Log("查询用户") @ApiOperation("查询用户") @GetMapping - @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_SELECT')") + @PreAuthorize("hasAnyRole('admin','user:all','user:select')") public ResponseEntity getUsers(UserQueryCriteria criteria, Pageable pageable){ Set deptSet = new HashSet<>(); Set result = new HashSet<>(); @@ -105,7 +105,7 @@ public class UserController { @Log("新增用户") @ApiOperation("新增用户") @PostMapping - @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_CREATE')") + @PreAuthorize("hasAnyRole('admin','user:all','user:add')") public ResponseEntity create(@Validated @RequestBody User resources){ checkLevel(resources); return new ResponseEntity<>(userService.create(resources),HttpStatus.CREATED); @@ -114,7 +114,7 @@ public class UserController { @Log("修改用户") @ApiOperation("修改用户") @PutMapping - @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_EDIT')") + @PreAuthorize("hasAnyRole('admin','user:all','user:edit')") public ResponseEntity update(@Validated(User.Update.class) @RequestBody User resources){ checkLevel(resources); userService.update(resources); @@ -124,7 +124,7 @@ public class UserController { @Log("删除用户") @ApiOperation("删除用户") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_DELETE')") + @PreAuthorize("hasAnyRole('admin','user:all','user:del')") public ResponseEntity delete(@PathVariable Long id){ Integer currentLevel = Collections.min(roleService.findByUsers_Id(SecurityUtils.getUserId()).stream().map(RoleSmallDTO::getLevel).collect(Collectors.toList())); Integer optLevel = Collections.min(roleService.findByUsers_Id(id).stream().map(RoleSmallDTO::getLevel).collect(Collectors.toList())); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java index 56733e14..0998a1e3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java @@ -16,6 +16,10 @@ public class MenuDTO{ private Long id; + private Integer type; + + private String permission; + private String name; private Long sort; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java index 8dff2bf5..59417329 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java @@ -24,6 +24,8 @@ public class RoleDTO{ private String remark; + private String permission; + private Set permissions; private Set menus; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java index ddf238a1..194ab756 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java @@ -47,8 +47,8 @@ public class MenuServiceImpl implements MenuService { @Override @Cacheable public List queryAll(MenuQueryCriteria criteria){ - Sort sort = new Sort(Sort.Direction.DESC,"id"); - return menuMapper.toDto(menuRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),sort)); +// Sort sort = new Sort(Sort.Direction.DESC,"id"); + return menuMapper.toDto(menuRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); } @Override @@ -63,7 +63,7 @@ public class MenuServiceImpl implements MenuService { public List findByRoles(List roles) { Set menus = new LinkedHashSet<>(); for (RoleSmallDTO role : roles) { - List menus1 = new ArrayList<>(menuRepository.findByRoles_IdOrderBySortAsc(role.getId())); + List menus1 = new ArrayList<>(menuRepository.findByRoles_IdAndTypeIsNotInOrderBySortAsc(role.getId(), 2)); menus.addAll(menus1); } return menus.stream().map(menuMapper::toDto).collect(Collectors.toList()); @@ -124,6 +124,8 @@ public class MenuServiceImpl implements MenuService { menu.setCache(resources.getCache()); menu.setHidden(resources.getHidden()); menu.setComponentName(resources.getComponentName()); + menu.setPermission(resources.getPermission()); + menu.setType(resources.getType()); menuRepository.save(menu); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java index 0c839149..552b3f20 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java @@ -44,8 +44,8 @@ public class PermissionServiceImpl implements PermissionService { @Override @Cacheable public List queryAll(PermissionQueryCriteria criteria) { - Sort sort = new Sort(Sort.Direction.DESC,"id"); - return permissionMapper.toDto(permissionRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),sort)); +// Sort sort = new Sort(Sort.Direction.DESC,"id"); + return permissionMapper.toDto(permissionRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); } @Override diff --git a/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl b/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl index 8dbe6bc9..2734a481 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl @@ -30,7 +30,7 @@ public class ${className}Controller { @GetMapping @Log("查询${className}") @ApiOperation("查询${className}") - @PreAuthorize("hasAnyRole('ADMIN','${upperCaseClassName}_ALL','${upperCaseClassName}_SELECT')") + @PreAuthorize("hasAnyRole('admin','${upperCaseClassName}_ALL','${upperCaseClassName}_SELECT')") public ResponseEntity get${className}s(${className}QueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(${changeClassName}Service.queryAll(criteria,pageable),HttpStatus.OK); } @@ -38,7 +38,7 @@ public class ${className}Controller { @PostMapping @Log("新增${className}") @ApiOperation("新增${className}") - @PreAuthorize("hasAnyRole('ADMIN','${upperCaseClassName}_ALL','${upperCaseClassName}_CREATE')") + @PreAuthorize("hasAnyRole('admin','${upperCaseClassName}_ALL','${upperCaseClassName}_CREATE')") public ResponseEntity create(@Validated @RequestBody ${className} resources){ return new ResponseEntity<>(${changeClassName}Service.create(resources),HttpStatus.CREATED); } @@ -46,7 +46,7 @@ public class ${className}Controller { @PutMapping @Log("修改${className}") @ApiOperation("修改${className}") - @PreAuthorize("hasAnyRole('ADMIN','${upperCaseClassName}_ALL','${upperCaseClassName}_EDIT')") + @PreAuthorize("hasAnyRole('admin','${upperCaseClassName}_ALL','${upperCaseClassName}_EDIT')") public ResponseEntity update(@Validated @RequestBody ${className} resources){ ${changeClassName}Service.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -55,7 +55,7 @@ public class ${className}Controller { @DeleteMapping(value = "/{${pkChangeColName}}") @Log("删除${className}") @ApiOperation("删除${className}") - @PreAuthorize("hasAnyRole('ADMIN','${upperCaseClassName}_ALL','${upperCaseClassName}_DELETE')") + @PreAuthorize("hasAnyRole('admin','${upperCaseClassName}_ALL','${upperCaseClassName}_DELETE')") public ResponseEntity delete(@PathVariable ${pkColumnType} ${pkChangeColName}){ ${changeClassName}Service.delete(${pkChangeColName}); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java index c1508153..9a262dcd 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java @@ -30,21 +30,21 @@ public class LocalStorageController { @ApiOperation("查询文件") @GetMapping - @PreAuthorize("hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_SELECT')") + @PreAuthorize("hasAnyRole('admin','LOCALSTORAGE_ALL','LOCALSTORAGE_SELECT')") public ResponseEntity getLocalStorages(LocalStorageQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(localStorageService.queryAll(criteria,pageable),HttpStatus.OK); } @ApiOperation("上传文件") @PostMapping - @PreAuthorize("hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_CREATE')") + @PreAuthorize("hasAnyRole('admin','LOCALSTORAGE_ALL','LOCALSTORAGE_CREATE')") public ResponseEntity create(@RequestParam String name, @RequestParam("file") MultipartFile file){ return new ResponseEntity<>(localStorageService.create(name, file),HttpStatus.CREATED); } @ApiOperation("修改文件") @PutMapping - @PreAuthorize("hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_EDIT')") + @PreAuthorize("hasAnyRole('admin','LOCALSTORAGE_ALL','LOCALSTORAGE_EDIT')") public ResponseEntity update(@Validated @RequestBody LocalStorage resources){ localStorageService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -52,7 +52,7 @@ public class LocalStorageController { @ApiOperation("删除文件") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_DELETE')") + @PreAuthorize("hasAnyRole('admin','LOCALSTORAGE_ALL','LOCALSTORAGE_DELETE')") public ResponseEntity delete(@PathVariable Long id){ localStorageService.delete(id); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java index 0c792d96..6a4a74f6 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java @@ -32,7 +32,7 @@ public class PictureController { } @Log("查询图片") - @PreAuthorize("hasAnyRole('ADMIN','PICTURE_ALL','PICTURE_SELECT')") + @PreAuthorize("hasAnyRole('admin','PICTURE_ALL','PICTURE_SELECT')") @GetMapping @ApiOperation("查询图片") public ResponseEntity getRoles(PictureQueryCriteria criteria, Pageable pageable){ @@ -40,7 +40,7 @@ public class PictureController { } @Log("上传图片") - @PreAuthorize("hasAnyRole('ADMIN','PICTURE_ALL','PICTURE_UPLOAD')") + @PreAuthorize("hasAnyRole('admin','PICTURE_ALL','PICTURE_UPLOAD')") @PostMapping @ApiOperation("上传图片") public ResponseEntity upload(@RequestParam MultipartFile file){ @@ -55,7 +55,7 @@ public class PictureController { @Log("删除图片") @ApiOperation("删除图片") - @PreAuthorize("hasAnyRole('ADMIN','PICTURE_ALL','PICTURE_DELETE')") + @PreAuthorize("hasAnyRole('admin','PICTURE_ALL','PICTURE_DELETE')") @DeleteMapping(value = "/{id}") public ResponseEntity delete(@PathVariable Long id) { pictureService.delete(pictureService.findById(id)); @@ -64,7 +64,7 @@ public class PictureController { @Log("多选删除图片") @ApiOperation("多选删除图片") - @PreAuthorize("hasAnyRole('ADMIN','PICTURE_ALL','PICTURE_DELETE')") + @PreAuthorize("hasAnyRole('admin','PICTURE_ALL','PICTURE_DELETE')") @DeleteMapping public ResponseEntity deleteAll(@RequestBody Long[] ids) { pictureService.deleteAll(ids); diff --git a/sql/eladmin.sql b/sql/eladmin.sql deleted file mode 100644 index 779ab38a..00000000 --- a/sql/eladmin.sql +++ /dev/null @@ -1,685 +0,0 @@ -/* - Navicat Premium Data Transfer - - Source Server : 本地 - Source Server Type : MySQL - Source Server Version : 50562 - Source Host : localhost:3306 - Source Schema : eladmin - - Target Server Type : MySQL - Target Server Version : 50562 - File Encoding : 65001 - - Date: 27/10/2019 21:00:30 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for alipay_config --- ---------------------------- -DROP TABLE IF EXISTS `alipay_config`; -CREATE TABLE `alipay_config` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', - `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', - `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; - --- ---------------------------- --- Records of alipay_config --- ---------------------------- -INSERT INTO `alipay_config` VALUES (1, '2016091700532697', 'utf-8', 'JSON', 'https://openapi.alipaydev.com/gateway.do', 'http://api.auauz.net/api/aliPay/notify', 'MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC5js8sInU10AJ0cAQ8UMMyXrQ+oHZEkVt5lBwsStmTJ7YikVYgbskx1YYEXTojRsWCb+SH/kDmDU4pK/u91SJ4KFCRMF2411piYuXU/jF96zKrADznYh/zAraqT6hvAIVtQAlMHN53nx16rLzZ/8jDEkaSwT7+HvHiS+7sxSojnu/3oV7BtgISoUNstmSe8WpWHOaWv19xyS+Mce9MY4BfseFhzTICUymUQdd/8hXA28/H6osUfAgsnxAKv7Wil3aJSgaJczWuflYOve0dJ3InZkhw5Cvr0atwpk8YKBQjy5CdkoHqvkOcIB+cYHXJKzOE5tqU7inSwVbHzOLQ3XbnAgMBAAECggEAVJp5eT0Ixg1eYSqFs9568WdetUNCSUchNxDBu6wxAbhUgfRUGZuJnnAll63OCTGGck+EGkFh48JjRcBpGoeoHLL88QXlZZbC/iLrea6gcDIhuvfzzOffe1RcZtDFEj9hlotg8dQj1tS0gy9pN9g4+EBH7zeu+fyv+qb2e/v1l6FkISXUjpkD7RLQr3ykjiiEw9BpeKb7j5s7Kdx1NNIzhkcQKNqlk8JrTGDNInbDM6inZfwwIO2R1DHinwdfKWkvOTODTYa2MoAvVMFT9Bec9FbLpoWp7ogv1JMV9svgrcF9XLzANZ/OQvkbe9TV9GWYvIbxN6qwQioKCWO4GPnCAQKBgQDgW5MgfhX8yjXqoaUy/d1VjI8dHeIyw8d+OBAYwaxRSlCfyQ+tieWcR2HdTzPca0T0GkWcKZm0ei5xRURgxt4DUDLXNh26HG0qObbtLJdu/AuBUuCqgOiLqJ2f1uIbrz6OZUHns+bT/jGW2Ws8+C13zTCZkZt9CaQsrp3QOGDx5wKBgQDTul39hp3ZPwGNFeZdkGoUoViOSd5Lhowd5wYMGAEXWRLlU8z+smT5v0POz9JnIbCRchIY2FAPKRdVTICzmPk2EPJFxYTcwaNbVqL6lN7J2IlXXMiit5QbiLauo55w7plwV6LQmKm9KV7JsZs5XwqF7CEovI7GevFzyD3w+uizAQKBgC3LY1eRhOlpWOIAhpjG6qOoohmeXOphvdmMlfSHq6WYFqbWwmV4rS5d/6LNpNdL6fItXqIGd8I34jzql49taCmi+A2nlR/E559j0mvM20gjGDIYeZUz5MOE8k+K6/IcrhcgofgqZ2ZED1ksHdB/E8DNWCswZl16V1FrfvjeWSNnAoGAMrBplCrIW5xz+J0Hm9rZKrs+AkK5D4fUv8vxbK/KgxZ2KaUYbNm0xv39c+PZUYuFRCz1HDGdaSPDTE6WeWjkMQd5mS6ikl9hhpqFRkyh0d0fdGToO9yLftQKOGE/q3XUEktI1XvXF0xyPwNgUCnq0QkpHyGVZPtGFxwXiDvpvgECgYA5PoB+nY8iDiRaJNko9w0hL4AeKogwf+4TbCw+KWVEn6jhuJa4LFTdSqp89PktQaoVpwv92el/AhYjWOl/jVCm122f9b7GyoelbjMNolToDwe5pF5RnSpEuDdLy9MfE8LnE3PlbE7E5BipQ3UjSebkgNboLHH/lNZA5qvEtvbfvQ==', 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAut9evKRuHJ/2QNfDlLwvN/S8l9hRAgPbb0u61bm4AtzaTGsLeMtScetxTWJnVvAVpMS9luhEJjt+Sbk5TNLArsgzzwARgaTKOLMT1TvWAK5EbHyI+eSrc3s7Awe1VYGwcubRFWDm16eQLv0k7iqiw+4mweHSz/wWyvBJVgwLoQ02btVtAQErCfSJCOmt0Q/oJQjj08YNRV4EKzB19+f5A+HQVAKy72dSybTzAK+3FPtTtNen/+b5wGeat7c32dhYHnGorPkPeXLtsqqUTp1su5fMfd4lElNdZaoCI7osZxWWUo17vBCZnyeXc9fk0qwD9mK6yRAxNbrY72Xx5VqIqwIDAQAB', 'http://api.auauz.net/api/aliPay/return', 'RSA2', '2088102176044281'); - --- ---------------------------- --- Table structure for dept --- ---------------------------- -DROP TABLE IF EXISTS `dept`; -CREATE TABLE `dept` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称', - `pid` bigint(20) NOT NULL COMMENT '上级部门', - `enabled` bit(1) NOT NULL, - `create_time` datetime NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of dept --- ---------------------------- -INSERT INTO `dept` VALUES (1, 'eladmin', 0, b'1', '2019-03-25 09:14:05'); -INSERT INTO `dept` VALUES (2, '研发部', 7, b'1', '2019-03-25 09:15:32'); -INSERT INTO `dept` VALUES (5, '运维部', 7, b'1', '2019-03-25 09:20:44'); -INSERT INTO `dept` VALUES (6, '测试部', 8, b'1', '2019-03-25 09:52:18'); -INSERT INTO `dept` VALUES (7, '华南分部', 1, b'1', '2019-03-25 11:04:50'); -INSERT INTO `dept` VALUES (8, '华北分部', 1, b'1', '2019-03-25 11:04:53'); -INSERT INTO `dept` VALUES (9, '财务部', 7, b'1', '2019-03-25 11:05:34'); -INSERT INTO `dept` VALUES (10, '行政部', 8, b'1', '2019-03-25 11:05:58'); -INSERT INTO `dept` VALUES (11, '人事部', 8, b'1', '2019-03-25 11:07:58'); - --- ---------------------------- --- Table structure for dict --- ---------------------------- -DROP TABLE IF EXISTS `dict`; -CREATE TABLE `dict` ( - `id` bigint(11) NOT NULL AUTO_INCREMENT, - `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 '描述', - `create_time` datetime NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of dict --- ---------------------------- -INSERT INTO `dict` VALUES (1, 'user_status', '用户状态', '2019-10-27 20:31:36'); -INSERT INTO `dict` VALUES (4, 'dept_status', '部门状态', '2019-10-27 20:31:36'); -INSERT INTO `dict` VALUES (5, 'job_status', '岗位状态', '2019-10-27 20:31:36'); - --- ---------------------------- --- Table structure for dict_detail --- ---------------------------- -DROP TABLE IF EXISTS `dict_detail`; -CREATE TABLE `dict_detail` ( - `id` bigint(11) NOT NULL AUTO_INCREMENT, - `label` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字典标签', - `value` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字典值', - `sort` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '排序', - `dict_id` bigint(11) NULL DEFAULT NULL COMMENT '字典id', - `create_time` datetime NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE, - INDEX `FK5tpkputc6d9nboxojdbgnpmyb`(`dict_id`) USING BTREE, - CONSTRAINT `FK5tpkputc6d9nboxojdbgnpmyb` FOREIGN KEY (`dict_id`) REFERENCES `dict` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of dict_detail --- ---------------------------- -INSERT INTO `dict_detail` VALUES (1, '激活', 'true', '1', 1, '2019-10-27 20:31:36'); -INSERT INTO `dict_detail` VALUES (2, '锁定', 'false', '2', 1, '2019-10-27 20:31:36'); -INSERT INTO `dict_detail` VALUES (11, '正常', 'true', '1', 4, '2019-10-27 20:31:36'); -INSERT INTO `dict_detail` VALUES (12, '停用', 'false', '2', 4, '2019-10-27 20:31:36'); -INSERT INTO `dict_detail` VALUES (13, '正常', 'true', '1', 5, '2019-10-27 20:31:36'); -INSERT INTO `dict_detail` VALUES (14, '停用', 'false', '2', 5, '2019-10-27 20:31:36'); - --- ---------------------------- --- Table structure for email_config --- ---------------------------- -DROP TABLE IF EXISTS `email_config`; -CREATE TABLE `email_config` ( - `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, - `prefix` 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, 'Zheng Jie', b'0', 'eladmin-system', 'me.zhengjie.test', 'E:\\workspace\\me\\front\\eladmin-qt\\src\\views\\test1111', 'E:\\workspace\\me\\front\\eladmin-qt\\src\\api', NULL); - --- ---------------------------- --- Table structure for job --- ---------------------------- -DROP TABLE IF EXISTS `job`; -CREATE TABLE `job` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - `enabled` bit(1) NOT NULL, - `sort` bigint(20) NOT NULL, - `dept_id` bigint(20) NULL DEFAULT NULL, - `create_time` datetime NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE, - INDEX `FKmvhj0rogastlctflsxf1d6k3i`(`dept_id`) USING BTREE, - CONSTRAINT `FKmvhj0rogastlctflsxf1d6k3i` FOREIGN KEY (`dept_id`) REFERENCES `dept` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of job --- ---------------------------- -INSERT INTO `job` VALUES (2, '董事长秘书', b'1', 2, 1, '2019-03-29 14:01:30'); -INSERT INTO `job` VALUES (8, '人事专员', b'1', 3, 11, '2019-03-29 14:52:28'); -INSERT INTO `job` VALUES (10, '产品经理', b'0', 4, 2, '2019-03-29 14:55:51'); -INSERT INTO `job` VALUES (11, '全栈开发', b'1', 6, 2, '2019-03-31 13:39:30'); -INSERT INTO `job` VALUES (12, '软件测试', b'1', 5, 2, '2019-03-31 13:39:43'); - --- ---------------------------- --- Table structure for local_storage --- ---------------------------- -DROP TABLE IF EXISTS `local_storage`; -CREATE TABLE `local_storage` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `real_name` 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 COMMENT '文件名', - `suffix` 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 '路径', - `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '类型', - `size` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '大小', - `operate` 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 = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Table structure for log --- ---------------------------- -DROP TABLE IF EXISTS `log`; -CREATE TABLE `log` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `create_time` datetime NULL DEFAULT NULL, - `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `exception_detail` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, - `log_type` 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, - `request_ip` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `time` bigint(20) NULL DEFAULT NULL, - `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `browser` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 15617 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 COMMENT 'ID', - `i_frame` bit(1) 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 '链接地址', - `cache` bit(1) NULL DEFAULT b'0', - `hidden` bit(1) NULL DEFAULT b'0', - `component_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '-', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', - PRIMARY KEY (`id`) USING BTREE, - INDEX `FKqcf9gem97gqa5qjm4d3elcqt5`(`pid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 43 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of menu --- ---------------------------- -INSERT INTO `menu` VALUES (1, b'0', '系统管理', NULL, 0, 1, 'system', 'system', b'0', b'0', NULL, '2018-12-18 15:11:29'); -INSERT INTO `menu` VALUES (2, b'0', '用户管理', 'system/user/index', 1, 2, 'peoples', 'user', b'0', b'0', 'User', '2018-12-18 15:14:44'); -INSERT INTO `menu` VALUES (3, b'0', '角色管理', 'system/role/index', 1, 3, 'role', 'role', b'0', b'0', 'Role', '2018-12-18 15:16:07'); -INSERT INTO `menu` VALUES (4, b'0', '权限管理', 'system/permission/index', 1, 4, 'permission', 'permission', b'0', b'0', 'Permission', '2018-12-18 15:16:45'); -INSERT INTO `menu` VALUES (5, b'0', '菜单管理', 'system/menu/index', 1, 5, 'menu', 'menu', b'0', b'0', 'Menu', '2018-12-18 15:17:28'); -INSERT INTO `menu` VALUES (6, b'0', '系统监控', NULL, 0, 10, 'monitor', 'monitor', b'0', b'0', NULL, '2018-12-18 15:17:48'); -INSERT INTO `menu` VALUES (7, b'0', '操作日志', 'monitor/log/index', 6, 11, 'log', 'logs', b'0', b'0', 'Log', '2018-12-18 15:18:26'); -INSERT INTO `menu` VALUES (8, b'0', '系统缓存', 'monitor/redis/index', 6, 13, 'redis', 'redis', b'0', b'0', 'Redis', '2018-12-18 15:19:01'); -INSERT INTO `menu` VALUES (9, b'0', 'SQL监控', 'monitor/sql/index', 6, 14, 'sqlMonitor', 'druid', b'0', b'0', 'Sql', '2018-12-18 15:19:34'); -INSERT INTO `menu` VALUES (10, b'0', '组件管理', NULL, 0, 50, 'zujian', 'components', b'0', b'0', NULL, '2018-12-19 13:38:16'); -INSERT INTO `menu` VALUES (11, b'0', '图标库', 'components/IconSelect', 10, 51, 'icon', 'icon', b'0', b'0', 'Icons', '2018-12-19 13:38:49'); -INSERT INTO `menu` VALUES (14, b'0', '邮件工具', 'tools/email/index', 36, 24, 'email', 'email', b'0', b'0', 'Email', '2018-12-27 10:13:09'); -INSERT INTO `menu` VALUES (15, b'0', '富文本', 'components/Editor', 10, 52, 'fwb', 'tinymce', b'0', b'0', 'Editor', '2018-12-27 11:58:25'); -INSERT INTO `menu` VALUES (16, b'0', '图床管理', 'tools/picture/index', 36, 25, 'image', 'pictures', b'0', b'0', 'Pictures', '2018-12-28 09:36:53'); -INSERT INTO `menu` VALUES (18, b'0', '存储管理', 'tools/storage/index', 36, 23, 'qiniu', 'storage', b'0', b'0', 'Storage', '2018-12-31 11:12:15'); -INSERT INTO `menu` VALUES (19, b'0', '支付宝工具', 'tools/aliPay/index', 36, 27, 'alipay', 'aliPay', b'0', b'0', 'AliPay', '2018-12-31 14:52:38'); -INSERT INTO `menu` VALUES (21, b'0', '多级菜单', '', 0, 900, 'menu', 'nested', b'0', b'1', NULL, '2019-01-04 16:22:03'); -INSERT INTO `menu` VALUES (22, b'0', '二级菜单1', 'nested/menu1/index', 21, 999, 'menu', 'menu1', b'0', b'0', NULL, '2019-01-04 16:23:29'); -INSERT INTO `menu` VALUES (23, b'0', '二级菜单2', 'nested/menu2/index', 21, 999, 'menu', 'menu2', b'0', b'0', NULL, '2019-01-04 16:23:57'); -INSERT INTO `menu` VALUES (24, b'0', '三级菜单1', 'nested/menu1/menu1-1', 22, 999, 'menu', 'menu1-1', b'0', b'0', NULL, '2019-01-04 16:24:48'); -INSERT INTO `menu` VALUES (27, b'0', '三级菜单2', 'nested/menu1/menu1-2', 22, 999, 'menu', 'menu1-2', b'0', b'0', NULL, '2019-01-07 17:27:32'); -INSERT INTO `menu` VALUES (28, b'0', '定时任务', 'system/timing/index', 36, 21, 'timing', 'timing', b'0', b'0', 'Timing', '2019-01-07 20:34:40'); -INSERT INTO `menu` VALUES (30, b'0', '代码生成', 'generator/index', 36, 22, 'dev', 'generator', b'0', b'0', 'GeneratorIndex', '2019-01-11 15:45:55'); -INSERT INTO `menu` VALUES (32, b'0', '异常日志', 'monitor/log/errorLog', 6, 12, 'error', 'errorLog', b'0', b'0', 'ErrorLog', '2019-01-13 13:49:03'); -INSERT INTO `menu` VALUES (33, b'0', 'Markdown', 'components/MarkDown', 10, 53, 'markdown', 'markdown', b'0', b'0', 'Markdown', '2019-03-08 13:46:44'); -INSERT INTO `menu` VALUES (34, b'0', 'Yaml编辑器', 'components/YamlEdit', 10, 54, 'dev', 'yaml', b'0', b'0', 'YamlEdit', '2019-03-08 15:49:40'); -INSERT INTO `menu` VALUES (35, b'0', '部门管理', 'system/dept/index', 1, 6, 'dept', 'dept', b'0', b'0', 'Dept', '2019-03-25 09:46:00'); -INSERT INTO `menu` VALUES (36, b'0', '系统工具', '', 0, 20, 'sys-tools', 'sys-tools', b'0', b'0', NULL, '2019-03-29 10:57:35'); -INSERT INTO `menu` VALUES (37, b'0', '岗位管理', 'system/job/index', 1, 7, 'Steve-Jobs', 'job', b'0', b'0', 'Job', '2019-03-29 13:51:18'); -INSERT INTO `menu` VALUES (38, b'0', '接口文档', 'tools/swagger/index', 36, 26, 'swagger', 'swagger2', b'0', b'0', 'Swagger', '2019-03-29 19:57:53'); -INSERT INTO `menu` VALUES (39, b'0', '字典管理', 'system/dict/index', 1, 8, 'dictionary', 'dict', b'0', b'0', 'Dict', '2019-04-10 11:49:04'); -INSERT INTO `menu` VALUES (41, b'0', '在线用户', 'monitor/online/index', 6, 10, 'Steve-Jobs', 'online', b'0', b'0', 'OnlineUser', '2019-10-26 22:08:43'); - --- ---------------------------- --- Table structure for permission --- ---------------------------- -DROP TABLE IF EXISTS `permission`; -CREATE TABLE `permission` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `alias` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '别名', - `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '名称', - `pid` int(11) NOT NULL COMMENT '上级权限', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 60 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of permission --- ---------------------------- -INSERT INTO `permission` VALUES (1, '管理员', 'ADMIN', 0, '2018-12-03 12:27:48'); -INSERT INTO `permission` VALUES (2, '用户管理', 'USER_ALL', 0, '2018-12-03 12:28:19'); -INSERT INTO `permission` VALUES (3, '用户查询', 'USER_SELECT', 2, '2018-12-03 12:31:35'); -INSERT INTO `permission` VALUES (4, '用户创建', 'USER_CREATE', 2, '2018-12-03 12:31:35'); -INSERT INTO `permission` VALUES (5, '用户编辑', 'USER_EDIT', 2, '2018-12-03 12:31:35'); -INSERT INTO `permission` VALUES (6, '用户删除', 'USER_DELETE', 2, '2018-12-03 12:31:35'); -INSERT INTO `permission` VALUES (7, '角色管理', 'ROLES_ALL', 0, '2018-12-03 12:28:19'); -INSERT INTO `permission` VALUES (8, '角色查询', 'ROLES_SELECT', 7, '2018-12-03 12:31:35'); -INSERT INTO `permission` VALUES (10, '角色创建', 'ROLES_CREATE', 7, '2018-12-09 20:10:16'); -INSERT INTO `permission` VALUES (11, '角色编辑', 'ROLES_EDIT', 7, '2018-12-09 20:10:42'); -INSERT INTO `permission` VALUES (12, '角色删除', 'ROLES_DELETE', 7, '2018-12-09 20:11:07'); -INSERT INTO `permission` VALUES (13, '权限管理', 'PERMISSION_ALL', 0, '2018-12-09 20:11:37'); -INSERT INTO `permission` VALUES (14, '权限查询', 'PERMISSION_SELECT', 13, '2018-12-09 20:11:55'); -INSERT INTO `permission` VALUES (15, '权限创建', 'PERMISSION_CREATE', 13, '2018-12-09 20:14:10'); -INSERT INTO `permission` VALUES (16, '权限编辑', 'PERMISSION_EDIT', 13, '2018-12-09 20:15:44'); -INSERT INTO `permission` VALUES (17, '权限删除', 'PERMISSION_DELETE', 13, '2018-12-09 20:15:59'); -INSERT INTO `permission` VALUES (18, '缓存管理', 'REDIS_ALL', 0, '2018-12-17 13:53:25'); -INSERT INTO `permission` VALUES (20, '缓存查询', 'REDIS_SELECT', 18, '2018-12-17 13:54:07'); -INSERT INTO `permission` VALUES (22, '缓存删除', 'REDIS_DELETE', 18, '2018-12-17 13:55:04'); -INSERT INTO `permission` VALUES (23, '图床管理', 'PICTURE_ALL', 0, '2018-12-27 20:31:49'); -INSERT INTO `permission` VALUES (24, '查询图片', 'PICTURE_SELECT', 23, '2018-12-27 20:32:04'); -INSERT INTO `permission` VALUES (25, '上传图片', 'PICTURE_UPLOAD', 23, '2018-12-27 20:32:24'); -INSERT INTO `permission` VALUES (26, '删除图片', 'PICTURE_DELETE', 23, '2018-12-27 20:32:45'); -INSERT INTO `permission` VALUES (29, '菜单管理', 'MENU_ALL', 0, '2018-12-28 17:34:31'); -INSERT INTO `permission` VALUES (30, '菜单查询', 'MENU_SELECT', 29, '2018-12-28 17:34:41'); -INSERT INTO `permission` VALUES (31, '菜单创建', 'MENU_CREATE', 29, '2018-12-28 17:34:52'); -INSERT INTO `permission` VALUES (32, '菜单编辑', 'MENU_EDIT', 29, '2018-12-28 17:35:20'); -INSERT INTO `permission` VALUES (33, '菜单删除', 'MENU_DELETE', 29, '2018-12-28 17:35:29'); -INSERT INTO `permission` VALUES (35, '定时任务', 'JOB_ALL', 0, '2019-01-08 14:59:57'); -INSERT INTO `permission` VALUES (36, '任务查询', 'JOB_SELECT', 35, '2019-01-08 15:00:09'); -INSERT INTO `permission` VALUES (37, '任务创建', 'JOB_CREATE', 35, '2019-01-08 15:00:20'); -INSERT INTO `permission` VALUES (38, '任务编辑', 'JOB_EDIT', 35, '2019-01-08 15:00:33'); -INSERT INTO `permission` VALUES (39, '任务删除', 'JOB_DELETE', 35, '2019-01-08 15:01:13'); -INSERT INTO `permission` VALUES (40, '部门管理', 'DEPT_ALL', 0, '2019-03-29 17:06:55'); -INSERT INTO `permission` VALUES (41, '部门查询', 'DEPT_SELECT', 40, '2019-03-29 17:07:09'); -INSERT INTO `permission` VALUES (42, '部门创建', 'DEPT_CREATE', 40, '2019-03-29 17:07:29'); -INSERT INTO `permission` VALUES (43, '部门编辑', 'DEPT_EDIT', 40, '2019-03-29 17:07:52'); -INSERT INTO `permission` VALUES (44, '部门删除', 'DEPT_DELETE', 40, '2019-03-29 17:08:14'); -INSERT INTO `permission` VALUES (45, '岗位管理', 'USERJOB_ALL', 0, '2019-03-29 17:08:52'); -INSERT INTO `permission` VALUES (46, '岗位查询', 'USERJOB_SELECT', 45, '2019-03-29 17:10:27'); -INSERT INTO `permission` VALUES (47, '岗位创建', 'USERJOB_CREATE', 45, '2019-03-29 17:10:55'); -INSERT INTO `permission` VALUES (48, '岗位编辑', 'USERJOB_EDIT', 45, '2019-03-29 17:11:08'); -INSERT INTO `permission` VALUES (49, '岗位删除', 'USERJOB_DELETE', 45, '2019-03-29 17:11:19'); -INSERT INTO `permission` VALUES (50, '字典管理', 'DICT_ALL', 0, '2019-04-10 16:24:51'); -INSERT INTO `permission` VALUES (51, '字典查询', 'DICT_SELECT', 50, '2019-04-10 16:25:16'); -INSERT INTO `permission` VALUES (52, '字典创建', 'DICT_CREATE', 50, '2019-04-10 16:25:29'); -INSERT INTO `permission` VALUES (53, '字典编辑', 'DICT_EDIT', 50, '2019-04-10 16:27:19'); -INSERT INTO `permission` VALUES (54, '字典删除', 'DICT_DELETE', 50, '2019-04-10 16:27:30'); -INSERT INTO `permission` VALUES (55, '文件管理', 'LOCALSTORAGE_ALL', 0, '2019-09-08 12:31:54'); -INSERT INTO `permission` VALUES (56, '文件搜索', 'LOCALSTORAGE_SELECT', 55, '2019-09-08 12:40:53'); -INSERT INTO `permission` VALUES (57, '文件上传', 'LOCALSTORAGE_CREATE', 55, '2019-09-08 12:41:05'); -INSERT INTO `permission` VALUES (58, '文件编辑', 'LOCALSTORAGE_EDIT', 55, '2019-09-08 12:41:19'); -INSERT INTO `permission` VALUES (59, '文件删除', 'LOCALSTORAGE_DELETE', 55, '2019-09-08 12:41:29'); - --- ---------------------------- --- Table structure for picture --- ---------------------------- -DROP TABLE IF EXISTS `picture`; -CREATE TABLE `picture` ( - `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 '图片宽度', - `md5code` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 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 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; - --- ---------------------------- --- Table structure for qiniu_content --- ---------------------------- -DROP TABLE IF EXISTS `qiniu_content`; -CREATE TABLE `qiniu_content` ( - `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', - `suffix` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 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 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 '备注', - `create_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; - --- ---------------------------- --- 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-08-22 14:08:29'); -INSERT INTO `quartz_job` VALUES (3, 'testTask', '0/5 * * * * ?', b'1', '测试', 'run', '', '不带参测试', '2019-09-26 16:44:39'); - --- ---------------------------- --- 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, - `create_time` datetime NULL DEFAULT NULL, - `cron_expression` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `exception_detail` 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, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 6 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 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 '备注', - `data_scope` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `level` int(255) NULL DEFAULT NULL, - `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of role --- ---------------------------- -INSERT INTO `role` VALUES (1, '超级管理员', '·', '全部', 1, '2018-11-23 11:04:37'); -INSERT INTO `role` VALUES (2, '普通用户', '用于测试菜单与权限', '自定义', 3, '2018-11-23 13:09:06'); -INSERT INTO `role` VALUES (4, '普通管理员', '普通管理员级别为2,使用该角色新增用户时只能赋予比普通管理员级别低的角色', '自定义', 2, '2019-05-13 14:16:15'); - --- ---------------------------- --- Table structure for roles_depts --- ---------------------------- -DROP TABLE IF EXISTS `roles_depts`; -CREATE TABLE `roles_depts` ( - `role_id` bigint(20) NOT NULL, - `dept_id` bigint(20) NOT NULL, - PRIMARY KEY (`role_id`, `dept_id`) USING BTREE, - INDEX `FK7qg6itn5ajdoa9h9o78v9ksur`(`dept_id`) USING BTREE, - CONSTRAINT `FK7qg6itn5ajdoa9h9o78v9ksur` FOREIGN KEY (`dept_id`) REFERENCES `dept` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `FKrg1ci4cxxfbja0sb0pddju7k` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of roles_depts --- ---------------------------- -INSERT INTO `roles_depts` VALUES (2, 5); -INSERT INTO `roles_depts` VALUES (4, 6); -INSERT INTO `roles_depts` VALUES (4, 7); -INSERT INTO `roles_depts` VALUES (2, 8); -INSERT INTO `roles_depts` VALUES (2, 9); - --- ---------------------------- --- Table structure for roles_menus --- ---------------------------- -DROP TABLE IF EXISTS `roles_menus`; -CREATE TABLE `roles_menus` ( - `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 `FKo7wsmlrrxb2osfaoavp46rv2r` FOREIGN KEY (`menu_id`) REFERENCES `menu` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `FKtag324maketmxffly3pdyh193` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of roles_menus --- ---------------------------- -INSERT INTO `roles_menus` VALUES (1, 1); -INSERT INTO `roles_menus` VALUES (2, 1); -INSERT INTO `roles_menus` VALUES (3, 1); -INSERT INTO `roles_menus` VALUES (4, 1); -INSERT INTO `roles_menus` VALUES (5, 1); -INSERT INTO `roles_menus` VALUES (6, 1); -INSERT INTO `roles_menus` VALUES (7, 1); -INSERT INTO `roles_menus` VALUES (8, 1); -INSERT INTO `roles_menus` VALUES (9, 1); -INSERT INTO `roles_menus` VALUES (10, 1); -INSERT INTO `roles_menus` VALUES (11, 1); -INSERT INTO `roles_menus` VALUES (14, 1); -INSERT INTO `roles_menus` VALUES (15, 1); -INSERT INTO `roles_menus` VALUES (16, 1); -INSERT INTO `roles_menus` VALUES (18, 1); -INSERT INTO `roles_menus` VALUES (19, 1); -INSERT INTO `roles_menus` VALUES (21, 1); -INSERT INTO `roles_menus` VALUES (22, 1); -INSERT INTO `roles_menus` VALUES (23, 1); -INSERT INTO `roles_menus` VALUES (24, 1); -INSERT INTO `roles_menus` VALUES (27, 1); -INSERT INTO `roles_menus` VALUES (28, 1); -INSERT INTO `roles_menus` VALUES (30, 1); -INSERT INTO `roles_menus` VALUES (32, 1); -INSERT INTO `roles_menus` VALUES (33, 1); -INSERT INTO `roles_menus` VALUES (34, 1); -INSERT INTO `roles_menus` VALUES (35, 1); -INSERT INTO `roles_menus` VALUES (36, 1); -INSERT INTO `roles_menus` VALUES (37, 1); -INSERT INTO `roles_menus` VALUES (38, 1); -INSERT INTO `roles_menus` VALUES (39, 1); -INSERT INTO `roles_menus` VALUES (41, 1); -INSERT INTO `roles_menus` VALUES (1, 2); -INSERT INTO `roles_menus` VALUES (2, 2); -INSERT INTO `roles_menus` VALUES (3, 2); -INSERT INTO `roles_menus` VALUES (4, 2); -INSERT INTO `roles_menus` VALUES (5, 2); -INSERT INTO `roles_menus` VALUES (6, 2); -INSERT INTO `roles_menus` VALUES (8, 2); -INSERT INTO `roles_menus` VALUES (9, 2); -INSERT INTO `roles_menus` VALUES (10, 2); -INSERT INTO `roles_menus` VALUES (11, 2); -INSERT INTO `roles_menus` VALUES (14, 2); -INSERT INTO `roles_menus` VALUES (15, 2); -INSERT INTO `roles_menus` VALUES (16, 2); -INSERT INTO `roles_menus` VALUES (18, 2); -INSERT INTO `roles_menus` VALUES (19, 2); -INSERT INTO `roles_menus` VALUES (21, 2); -INSERT INTO `roles_menus` VALUES (22, 2); -INSERT INTO `roles_menus` VALUES (23, 2); -INSERT INTO `roles_menus` VALUES (24, 2); -INSERT INTO `roles_menus` VALUES (27, 2); -INSERT INTO `roles_menus` VALUES (28, 2); -INSERT INTO `roles_menus` VALUES (30, 2); -INSERT INTO `roles_menus` VALUES (33, 2); -INSERT INTO `roles_menus` VALUES (34, 2); -INSERT INTO `roles_menus` VALUES (35, 2); -INSERT INTO `roles_menus` VALUES (36, 2); -INSERT INTO `roles_menus` VALUES (37, 2); -INSERT INTO `roles_menus` VALUES (38, 2); -INSERT INTO `roles_menus` VALUES (39, 2); -INSERT INTO `roles_menus` VALUES (1, 4); -INSERT INTO `roles_menus` VALUES (2, 4); - --- ---------------------------- --- Table structure for roles_permissions --- ---------------------------- -DROP TABLE IF EXISTS `roles_permissions`; -CREATE TABLE `roles_permissions` ( - `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, - CONSTRAINT `FKboeuhl31go7wer3bpy6so7exi` FOREIGN KEY (`permission_id`) REFERENCES `permission` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of roles_permissions --- ---------------------------- -INSERT INTO `roles_permissions` VALUES (1, 1); -INSERT INTO `roles_permissions` VALUES (2, 3); -INSERT INTO `roles_permissions` VALUES (4, 3); -INSERT INTO `roles_permissions` VALUES (4, 4); -INSERT INTO `roles_permissions` VALUES (4, 5); -INSERT INTO `roles_permissions` VALUES (2, 8); -INSERT INTO `roles_permissions` VALUES (2, 14); -INSERT INTO `roles_permissions` VALUES (2, 20); -INSERT INTO `roles_permissions` VALUES (2, 23); -INSERT INTO `roles_permissions` VALUES (2, 24); -INSERT INTO `roles_permissions` VALUES (2, 25); -INSERT INTO `roles_permissions` VALUES (2, 26); -INSERT INTO `roles_permissions` VALUES (2, 30); -INSERT INTO `roles_permissions` VALUES (2, 36); -INSERT INTO `roles_permissions` VALUES (2, 41); -INSERT INTO `roles_permissions` VALUES (2, 46); -INSERT INTO `roles_permissions` VALUES (2, 51); - --- ---------------------------- --- Table structure for user --- ---------------------------- -DROP TABLE IF EXISTS `user`; -CREATE TABLE `user` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `avatar_id` bigint(20) 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 '用户名', - `dept_id` bigint(20) NULL DEFAULT NULL, - `phone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `job_id` bigint(20) NULL DEFAULT NULL, - `create_time` datetime 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, - INDEX `FK5rwmryny6jthaaxkogownknqp`(`dept_id`) USING BTREE, - INDEX `FKfftoc2abhot8f2wu6cl9a5iky`(`job_id`) USING BTREE, - INDEX `FKpq2dhypk2qgt68nauh2by22jb`(`avatar_id`) USING BTREE, - CONSTRAINT `FK5rwmryny6jthaaxkogownknqp` FOREIGN KEY (`dept_id`) REFERENCES `dept` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `FKfftoc2abhot8f2wu6cl9a5iky` FOREIGN KEY (`job_id`) REFERENCES `job` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `FKpq2dhypk2qgt68nauh2by22jb` FOREIGN KEY (`avatar_id`) REFERENCES `user_avatar` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of user --- ---------------------------- -INSERT INTO `user` VALUES (1, NULL, 'admin@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'admin', 2, '18888888888', 11, '2018-08-23 09:11:56', '2019-05-18 17:34:21'); -INSERT INTO `user` VALUES (3, NULL, 'test@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'test', 2, '17777777777', 12, '2018-12-27 20:05:26', '2019-04-01 09:15:24'); -INSERT INTO `user` VALUES (5, NULL, 'hr@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'hr', 11, '15555555555', 8, '2019-04-02 10:07:12', '2019-10-27 20:32:11'); - --- ---------------------------- --- Table structure for user_avatar --- ---------------------------- -DROP TABLE IF EXISTS `user_avatar`; -CREATE TABLE `user_avatar` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `real_name` 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, - `size` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `create_time` datetime NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Table structure for users_roles --- ---------------------------- -DROP TABLE IF EXISTS `users_roles`; -CREATE TABLE `users_roles` ( - `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 `FKgd3iendaoyh04b95ykqise6qh` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `FKt4v0rrweyk393bdgt107vdx0x` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - --- ---------------------------- --- Records of users_roles --- ---------------------------- -INSERT INTO `users_roles` VALUES (1, 1); -INSERT INTO `users_roles` VALUES (3, 2); -INSERT INTO `users_roles` VALUES (5, 4); - --- ---------------------------- --- Table structure for verification_code --- ---------------------------- -DROP TABLE IF EXISTS `verification_code`; -CREATE TABLE `verification_code` ( - `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 = 1 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, - `create_time` datetime NULL DEFAULT NULL, - `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, - `week_day` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `UK_11aksgq87euk9bcyeesfs4vtp`(`date`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 106 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; - - -SET FOREIGN_KEY_CHECKS = 1; From d5d48015789b80e0c3358e1df0ef64cba4d8827f Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Tue, 29 Oct 2019 21:39:02 +0800 Subject: [PATCH 15/25] =?UTF-8?q?=E8=A7=92=E8=89=B2=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=94=B9=E9=80=A0=E5=AE=8C=E6=88=90=EF=BC=8C=E5=8E=BB=E9=99=A4?= =?UTF-8?q?=E6=9D=83=E9=99=90=E7=AE=A1=E7=90=86=EF=BC=8C=E9=87=87=E7=94=A8?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E6=96=B9=E5=BC=8F=E6=98=BE=E7=A4=BA=E5=9C=A8?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E7=AE=A1=E7=90=86=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhengjie/config/ElPermissionConfig.java | 21 +++ .../java/me/zhengjie/rest/LogController.java | 6 +- .../modules/monitor/rest/RedisController.java | 6 +- .../quartz/rest/QuartzJobController.java | 14 +- .../security/rest/OnlineController.java | 4 +- .../service/JwtPermissionService.java | 13 +- .../modules/system/domain/Permission.java | 48 ----- .../zhengjie/modules/system/domain/Role.java | 4 - .../repository/PermissionRepository.java | 17 -- .../system/repository/RoleRepository.java | 4 - .../modules/system/rest/DeptController.java | 8 +- .../modules/system/rest/DictController.java | 8 +- .../system/rest/DictDetailController.java | 6 +- .../modules/system/rest/JobController.java | 8 +- .../modules/system/rest/MenuController.java | 10 +- .../system/rest/PermissionController.java | 89 --------- .../modules/system/rest/RoleController.java | 23 +-- .../modules/system/rest/UserController.java | 17 +- .../system/service/PermissionService.java | 32 ---- .../modules/system/service/RoleService.java | 4 - .../system/service/dto/PermissionDTO.java | 28 --- .../service/dto/PermissionQueryCriteria.java | 15 -- .../modules/system/service/dto/RoleDTO.java | 2 - .../service/impl/PermissionServiceImpl.java | 169 ------------------ .../system/service/impl/RoleServiceImpl.java | 15 -- .../service/mapper/PermissionMapper.java | 16 -- .../system/service/mapper/RoleMapper.java | 2 +- .../template/generator/admin/Controller.ftl | 8 +- .../template/generator/front/index.ftl | 8 +- .../zhengjie/rest/LocalStorageController.java | 8 +- .../me/zhengjie/rest/PictureController.java | 8 +- 31 files changed, 95 insertions(+), 526 deletions(-) create mode 100644 eladmin-common/src/main/java/me/zhengjie/config/ElPermissionConfig.java delete mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java delete mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/system/repository/PermissionRepository.java delete mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java delete mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/system/service/PermissionService.java delete mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionDTO.java delete mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionQueryCriteria.java delete mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java delete mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/PermissionMapper.java diff --git a/eladmin-common/src/main/java/me/zhengjie/config/ElPermissionConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/ElPermissionConfig.java new file mode 100644 index 00000000..a5b1aaf1 --- /dev/null +++ b/eladmin-common/src/main/java/me/zhengjie/config/ElPermissionConfig.java @@ -0,0 +1,21 @@ +package me.zhengjie.config; + +import me.zhengjie.utils.SecurityUtils; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.stereotype.Service; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +@Service(value = "el") +public class ElPermissionConfig { + + public Boolean check(String ...permissions){ + List elPermissions = SecurityUtils.getUserDetails().getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList()); + List list = Arrays.stream(permissions).filter(elPermissions::contains).map(s -> s).collect(Collectors.toList()); + if(elPermissions.contains("admin") || list.size() != 0){ + return true; + } + return false; + } +} diff --git a/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java b/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java index 670a3d80..f52bdb19 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java +++ b/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java @@ -31,7 +31,7 @@ public class LogController { @GetMapping @ApiOperation("日志查询") - @PreAuthorize("hasAnyRole('admin')") + @PreAuthorize("@el.check()") public ResponseEntity getLogs(LogQueryCriteria criteria, Pageable pageable){ criteria.setLogType("INFO"); return new ResponseEntity<>(logService.queryAll(criteria,pageable), HttpStatus.OK); @@ -47,7 +47,7 @@ public class LogController { @GetMapping(value = "/error") @ApiOperation("错误日志查询") - @PreAuthorize("hasAnyRole('admin')") + @PreAuthorize("@el.check()") public ResponseEntity getErrorLogs(LogQueryCriteria criteria, Pageable pageable){ criteria.setLogType("ERROR"); return new ResponseEntity<>(logService.queryAll(criteria,pageable), HttpStatus.OK); @@ -55,7 +55,7 @@ public class LogController { @GetMapping(value = "/error/{id}") @ApiOperation("日志异常详情查询") - @PreAuthorize("hasAnyRole('admin')") + @PreAuthorize("@el.check()") public ResponseEntity getErrorLogs(@PathVariable Long id){ return new ResponseEntity<>(logService.findByErrDetail(id), HttpStatus.OK); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java index 85eb1bc3..e487316d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java @@ -29,7 +29,7 @@ public class RedisController { @Log("查询Redis缓存") @GetMapping @ApiOperation("查询Redis缓存") - @PreAuthorize("hasAnyRole('admin','REDIS_ALL','REDIS_SELECT')") + @PreAuthorize("@el.check('redis:list')") public ResponseEntity getRedis(String key, Pageable pageable){ return new ResponseEntity<>(redisService.findByKey(key,pageable), HttpStatus.OK); } @@ -37,7 +37,7 @@ public class RedisController { @Log("删除Redis缓存") @DeleteMapping @ApiOperation("删除Redis缓存") - @PreAuthorize("hasAnyRole('admin','REDIS_ALL','REDIS_DELETE')") + @PreAuthorize("@el.check('redis:del')") public ResponseEntity delete(@RequestBody RedisVo resources){ redisService.delete(resources.getKey()); return new ResponseEntity(HttpStatus.OK); @@ -46,7 +46,7 @@ public class RedisController { @Log("清空Redis缓存") @DeleteMapping(value = "/all") @ApiOperation("清空Redis缓存") - @PreAuthorize("hasAnyRole('admin','REDIS_ALL','REDIS_DELETE')") + @PreAuthorize("@el.check('redis:del')") public ResponseEntity deleteAll(){ redisService.deleteAll(); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java index 08a9eeaf..8927db72 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java @@ -36,14 +36,14 @@ public class QuartzJobController { @Log("查询定时任务") @ApiOperation("查询定时任务") @GetMapping - @PreAuthorize("hasAnyRole('admin','JOB_ALL','JOB_SELECT')") + @PreAuthorize("@el.check('timing:list')") public ResponseEntity getJobs(JobQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(quartzJobService.queryAll(criteria,pageable), HttpStatus.OK); } @ApiOperation("查询任务执行日志") @GetMapping(value = "/logs") - @PreAuthorize("hasAnyRole('admin','JOB_ALL','JOB_SELECT')") + @PreAuthorize("@el.check('timing:list')") public ResponseEntity getJobLogs(JobQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(quartzJobService.queryAllLog(criteria,pageable), HttpStatus.OK); } @@ -51,7 +51,7 @@ public class QuartzJobController { @Log("新增定时任务") @ApiOperation("新增定时任务") @PostMapping - @PreAuthorize("hasAnyRole('admin','JOB_ALL','JOB_CREATE')") + @PreAuthorize("@el.check('timing:add')") public ResponseEntity create(@Validated @RequestBody QuartzJob resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); @@ -62,7 +62,7 @@ public class QuartzJobController { @Log("修改定时任务") @ApiOperation("修改定时任务") @PutMapping - @PreAuthorize("hasAnyRole('admin','JOB_ALL','JOB_EDIT')") + @PreAuthorize("@el.check('timing:edit')") public ResponseEntity update(@Validated(QuartzJob.Update.class) @RequestBody QuartzJob resources){ quartzJobService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -71,7 +71,7 @@ public class QuartzJobController { @Log("更改定时任务状态") @ApiOperation("更改定时任务状态") @PutMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('admin','JOB_ALL','JOB_EDIT')") + @PreAuthorize("@el.check('timing:edit')") public ResponseEntity updateIsPause(@PathVariable Long id){ quartzJobService.updateIsPause(quartzJobService.findById(id)); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -80,7 +80,7 @@ public class QuartzJobController { @Log("执行定时任务") @ApiOperation("执行定时任务") @PutMapping(value = "/exec/{id}") - @PreAuthorize("hasAnyRole('admin','JOB_ALL','JOB_EDIT')") + @PreAuthorize("@el.check('timing:edit')") public ResponseEntity execution(@PathVariable Long id){ quartzJobService.execution(quartzJobService.findById(id)); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -89,7 +89,7 @@ public class QuartzJobController { @Log("删除定时任务") @ApiOperation("删除定时任务") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('admin','JOB_ALL','JOB_DELETE')") + @PreAuthorize("@el.check('timing:del')") public ResponseEntity delete(@PathVariable Long id){ quartzJobService.delete(quartzJobService.findById(id)); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/OnlineController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/OnlineController.java index 5d69bf2f..367f739c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/OnlineController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/OnlineController.java @@ -22,14 +22,14 @@ public class OnlineController { @ApiOperation("查询在线用户") @GetMapping - @PreAuthorize("hasRole('ADMIN')") + @PreAuthorize("@el.check()") public ResponseEntity getAll(String filter, Pageable pageable){ return new ResponseEntity<>(onlineUserService.getAll(filter, pageable),HttpStatus.OK); } @ApiOperation("踢出用户") @DeleteMapping(value = "/{key}") - @PreAuthorize("hasRole('ADMIN')") + @PreAuthorize("@el.check()") public ResponseEntity delete(@PathVariable String key) throws Exception { onlineUserService.kickOut(key); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtPermissionService.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtPermissionService.java index b1611655..461841ff 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtPermissionService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtPermissionService.java @@ -1,14 +1,17 @@ package me.zhengjie.modules.security.service; +import me.zhengjie.modules.system.domain.Menu; import me.zhengjie.modules.system.domain.Role; import me.zhengjie.modules.system.repository.RoleRepository; import me.zhengjie.modules.system.service.dto.UserDTO; +import me.zhengjie.utils.StringUtils; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.Cacheable; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.stereotype.Service; import java.util.Collection; +import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -33,9 +36,13 @@ public class JwtPermissionService { System.out.println("--------------------loadPermissionByUser:" + user.getUsername() + "---------------------"); Set roles = roleRepository.findByUsers_Id(user.getId()); - - return roles.stream().flatMap(role -> role.getPermissions().stream()) - .map(permission -> new SimpleGrantedAuthority(permission.getName())) + Set permissions = roles.stream().filter(role -> StringUtils.isNotBlank(role.getPermission())).map(Role::getPermission).collect(Collectors.toSet()); + permissions.addAll( + roles.stream().flatMap(role -> role.getMenus().stream()) + .filter(menu -> StringUtils.isNotBlank(menu.getPermission())) + .map(Menu::getPermission).collect(Collectors.toSet()) + ); + return permissions.stream().map(permission -> new SimpleGrantedAuthority(permission)) .collect(Collectors.toList()); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java deleted file mode 100644 index f23aa3e6..00000000 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java +++ /dev/null @@ -1,48 +0,0 @@ -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; -import java.sql.Timestamp; -import java.util.Set; - -/** - * @author Zheng Jie - * @date 2018-12-03 - */ -@Entity -@Getter -@Setter -@Table(name = "permission") -public class Permission{ - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @NotNull(groups = {Update.class}) - private Long id; - - @NotBlank - private String name; - - // 上级类目 - @NotNull - @Column(name = "pid",nullable = false) - private Long pid; - - @NotBlank - private String alias; - - @Column(name = "create_time") - @CreationTimestamp - private Timestamp createTime; - - @JsonIgnore - @ManyToMany(mappedBy = "permissions") - private Set roles; - - public @interface Update {} -} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java index 51045e51..17e678f8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java @@ -50,10 +50,6 @@ public class Role{ @ManyToMany(mappedBy = "roles") private Set users; - @ManyToMany - @JoinTable(name = "roles_permissions", joinColumns = {@JoinColumn(name = "role_id",referencedColumnName = "id")}, inverseJoinColumns = {@JoinColumn(name = "permission_id",referencedColumnName = "id")}) - private Set permissions; - @ManyToMany @JoinTable(name = "roles_menus", joinColumns = {@JoinColumn(name = "role_id",referencedColumnName = "id")}, inverseJoinColumns = {@JoinColumn(name = "menu_id",referencedColumnName = "id")}) private Set menus; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/PermissionRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/PermissionRepository.java deleted file mode 100644 index 0e8ba8f3..00000000 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/PermissionRepository.java +++ /dev/null @@ -1,17 +0,0 @@ -package me.zhengjie.modules.system.repository; - -import me.zhengjie.modules.system.domain.Permission; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.JpaSpecificationExecutor; -import java.util.List; - -/** - * @author Zheng Jie - * @date 2018-12-03 - */ -public interface PermissionRepository extends JpaRepository, JpaSpecificationExecutor { - - Permission findByName(String name); - - List findByPid(long pid); -} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java index 98edaed5..7731ade5 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java @@ -17,10 +17,6 @@ public interface RoleRepository extends JpaRepository, JpaSpecificat Set findByUsers_Id(Long id); - @Modifying - @Query(value = "delete from roles_permissions where permission_id = ?1",nativeQuery = true) - void untiedPermission(Long id); - @Modifying @Query(value = "delete from roles_menus where menu_id = ?1",nativeQuery = true) void untiedMenu(Long id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java index 637d6535..e4f33e9f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java @@ -40,7 +40,7 @@ public class DeptController { @Log("查询部门") @ApiOperation("查询部门") @GetMapping - @PreAuthorize("hasAnyRole('admin','user:all','user:select','DEPT_ALL','DEPT_SELECT')") + @PreAuthorize("@el.check('user:list','dept:list')") public ResponseEntity getDepts(DeptQueryCriteria criteria){ // 数据权限 criteria.setIds(dataScope.getDeptIds()); @@ -51,7 +51,7 @@ public class DeptController { @Log("新增部门") @ApiOperation("新增部门") @PostMapping - @PreAuthorize("hasAnyRole('admin','DEPT_ALL','DEPT_CREATE')") + @PreAuthorize("@el.check('dept:add')") public ResponseEntity create(@Validated @RequestBody Dept resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); @@ -62,7 +62,7 @@ public class DeptController { @Log("修改部门") @ApiOperation("修改部门") @PutMapping - @PreAuthorize("hasAnyRole('admin','DEPT_ALL','DEPT_EDIT')") + @PreAuthorize("@el.check('dept:edit')") public ResponseEntity update(@Validated(Dept.Update.class) @RequestBody Dept resources){ deptService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -71,7 +71,7 @@ public class DeptController { @Log("删除部门") @ApiOperation("删除部门") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('admin','DEPT_ALL','DEPT_DELETE')") + @PreAuthorize("@el.check('dept:del')") public ResponseEntity delete(@PathVariable Long id){ try { deptService.delete(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java index 7b309c02..bd3cfa80 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java @@ -34,7 +34,7 @@ public class DictController { @Log("查询字典") @ApiOperation("查询字典") @GetMapping - @PreAuthorize("hasAnyRole('admin','DICT_ALL','DICT_SELECT')") + @PreAuthorize("@el.check('dict:list')") public ResponseEntity getDicts(DictQueryCriteria resources, Pageable pageable){ return new ResponseEntity<>(dictService.queryAll(resources,pageable),HttpStatus.OK); } @@ -42,7 +42,7 @@ public class DictController { @Log("新增字典") @ApiOperation("新增字典") @PostMapping - @PreAuthorize("hasAnyRole('admin','DICT_ALL','DICT_CREATE')") + @PreAuthorize("@el.check('dict:add')") public ResponseEntity create(@Validated @RequestBody Dict resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); @@ -53,7 +53,7 @@ public class DictController { @Log("修改字典") @ApiOperation("修改字典") @PutMapping - @PreAuthorize("hasAnyRole('admin','DICT_ALL','DICT_EDIT')") + @PreAuthorize("@el.check('dict:edit')") public ResponseEntity update(@Validated(Dict.Update.class) @RequestBody Dict resources){ dictService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -62,7 +62,7 @@ public class DictController { @Log("删除字典") @ApiOperation("删除字典") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('admin','DICT_ALL','DICT_DELETE')") + @PreAuthorize("@el.check('dict:del')") public ResponseEntity delete(@PathVariable Long id){ dictService.delete(id); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java index d9d68967..0c463994 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java @@ -60,7 +60,7 @@ public class DictDetailController { @Log("新增字典详情") @ApiOperation("新增字典详情") @PostMapping - @PreAuthorize("hasAnyRole('admin','DICT_ALL','DICT_CREATE')") + @PreAuthorize("@el.check('dict:add')") public ResponseEntity create(@Validated @RequestBody DictDetail resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); @@ -71,7 +71,7 @@ public class DictDetailController { @Log("修改字典详情") @ApiOperation("修改字典详情") @PutMapping - @PreAuthorize("hasAnyRole('admin','DICT_ALL','DICT_EDIT')") + @PreAuthorize("@el.check('dict:edit')") public ResponseEntity update(@Validated(DictDetail.Update.class) @RequestBody DictDetail resources){ dictDetailService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -80,7 +80,7 @@ public class DictDetailController { @Log("删除字典详情") @ApiOperation("删除字典详情") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('admin','DICT_ALL','DICT_DELETE')") + @PreAuthorize("@el.check('dict:del')") public ResponseEntity delete(@PathVariable Long id){ dictDetailService.delete(id); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java index b7c2788a..fa26b899 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java @@ -39,7 +39,7 @@ public class JobController { @Log("查询岗位") @ApiOperation("查询岗位") @GetMapping - @PreAuthorize("hasAnyRole('admin','USERJOB_ALL','USERJOB_SELECT','user:all','user:select')") + @PreAuthorize("@el.check('job:list','user:list')") public ResponseEntity getJobs(JobQueryCriteria criteria, Pageable pageable){ // 数据权限 @@ -50,7 +50,7 @@ public class JobController { @Log("新增岗位") @ApiOperation("新增岗位") @PostMapping - @PreAuthorize("hasAnyRole('admin','USERJOB_ALL','USERJOB_CREATE')") + @PreAuthorize("@el.check('job:add')") public ResponseEntity create(@Validated @RequestBody Job resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); @@ -61,7 +61,7 @@ public class JobController { @Log("修改岗位") @ApiOperation("修改岗位") @PutMapping - @PreAuthorize("hasAnyRole('admin','USERJOB_ALL','USERJOB_EDIT')") + @PreAuthorize("@el.check('job:edit')") public ResponseEntity update(@Validated(Job.Update.class) @RequestBody Job resources){ jobService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -70,7 +70,7 @@ public class JobController { @Log("删除岗位") @ApiOperation("删除岗位") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('admin','USERJOB_ALL','USERJOB_DELETE')") + @PreAuthorize("@el.check('job:del')") public ResponseEntity delete(@PathVariable Long id){ try { jobService.delete(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java index e9ca1da9..af2195fc 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java @@ -56,7 +56,7 @@ public class MenuController { @ApiOperation("返回全部的菜单") @GetMapping(value = "/tree") - @PreAuthorize("hasAnyRole('admin','MENU_ALL','MENU_CREATE','MENU_EDIT','ROLES_SELECT','ROLES_ALL')") + @PreAuthorize("@el.check('menu:list','roles:list')") public ResponseEntity getMenuTree(){ return new ResponseEntity<>(menuService.getMenuTree(menuService.findByPid(0L)),HttpStatus.OK); } @@ -64,7 +64,7 @@ public class MenuController { @Log("查询菜单") @ApiOperation("查询菜单") @GetMapping - @PreAuthorize("hasAnyRole('admin','MENU_ALL','MENU_SELECT')") + @PreAuthorize("@el.check('menu:list')") public ResponseEntity getMenus(MenuQueryCriteria criteria){ List menuDTOList = menuService.queryAll(criteria); return new ResponseEntity<>(menuService.buildTree(menuDTOList),HttpStatus.OK); @@ -73,7 +73,7 @@ public class MenuController { @Log("新增菜单") @ApiOperation("新增菜单") @PostMapping - @PreAuthorize("hasAnyRole('admin','MENU_ALL','MENU_CREATE')") + @PreAuthorize("@el.check('menu:add')") public ResponseEntity create(@Validated @RequestBody Menu resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); @@ -84,7 +84,7 @@ public class MenuController { @Log("修改菜单") @ApiOperation("修改菜单") @PutMapping - @PreAuthorize("hasAnyRole('admin','MENU_ALL','MENU_EDIT')") + @PreAuthorize("@el.check('menu:edit')") public ResponseEntity update(@Validated(Menu.Update.class) @RequestBody Menu resources){ menuService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -93,7 +93,7 @@ public class MenuController { @Log("删除菜单") @ApiOperation("删除菜单") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('admin','MENU_ALL','MENU_DELETE')") + @PreAuthorize("@el.check('menu:del')") public ResponseEntity delete(@PathVariable Long id){ List menuList = menuService.findByPid(id); Set menuSet = new HashSet<>(); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java deleted file mode 100644 index a7a7577a..00000000 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java +++ /dev/null @@ -1,89 +0,0 @@ -package me.zhengjie.modules.system.rest; - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -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.dto.PermissionQueryCriteria; -import me.zhengjie.modules.system.service.mapper.PermissionMapper; -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.*; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -/** - * @author Zheng Jie - * @date 2018-12-03 - */ -@Api(tags = "系统:权限管理") -@RestController -@RequestMapping("/api/permissions") -public class PermissionController { - - private final PermissionService permissionService; - - private final PermissionMapper permissionMapper; - - private static final String ENTITY_NAME = "permission"; - - public PermissionController(PermissionService permissionService, PermissionMapper permissionMapper) { - this.permissionService = permissionService; - this.permissionMapper = permissionMapper; - } - - @ApiOperation("返回全部的权限,新增角色时下拉选择") - @GetMapping(value = "/tree") - @PreAuthorize("hasAnyRole('admin','PERMISSION_ALL','PERMISSION_CREATE','PERMISSION_EDIT','ROLES_SELECT','ROLES_ALL')") - public ResponseEntity getTree(){ - return new ResponseEntity<>(permissionService.getPermissionTree(permissionService.findByPid(0L)),HttpStatus.OK); - } - - @Log("查询权限") - @ApiOperation("查询权限") - @GetMapping - @PreAuthorize("hasAnyRole('admin','PERMISSION_ALL','PERMISSION_SELECT')") - public ResponseEntity getPermissions(PermissionQueryCriteria criteria){ - List permissionDTOS = permissionService.queryAll(criteria); - return new ResponseEntity<>(permissionService.buildTree(permissionDTOS),HttpStatus.OK); - } - - @Log("新增权限") - @ApiOperation("新增权限") - @PostMapping - @PreAuthorize("hasAnyRole('admin','PERMISSION_ALL','PERMISSION_CREATE')") - public ResponseEntity create(@Validated @RequestBody Permission resources){ - if (resources.getId() != null) { - throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); - } - return new ResponseEntity<>(permissionService.create(resources),HttpStatus.CREATED); - } - - @Log("修改权限") - @ApiOperation("修改权限") - @PutMapping - @PreAuthorize("hasAnyRole('admin','PERMISSION_ALL','PERMISSION_EDIT')") - public ResponseEntity update(@Validated(Permission.Update.class) @RequestBody Permission resources){ - permissionService.update(resources); - return new ResponseEntity(HttpStatus.NO_CONTENT); - } - - @Log("删除权限") - @ApiOperation("删除权限") - @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('admin','PERMISSION_ALL','PERMISSION_DELETE')") - public ResponseEntity delete(@PathVariable Long id){ - List permissions = permissionService.findByPid(id); - Set permissionSet = new HashSet<>(); - permissionSet.add(permissionMapper.toEntity(permissionService.findById(id))); - permissionSet = permissionService.getDeletePermission(permissions, permissionSet); - permissionService.delete(permissionSet); - return new ResponseEntity(HttpStatus.OK); - } -} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java index 97e54103..c4548450 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java @@ -42,14 +42,14 @@ public class RoleController { @ApiOperation("获取单个role") @GetMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('admin','ROLES_ALL','ROLES_SELECT')") + @PreAuthorize("@el.check('roles:list')") public ResponseEntity getRoles(@PathVariable Long id){ return new ResponseEntity<>(roleService.findById(id), HttpStatus.OK); } @ApiOperation("返回全部的角色") @GetMapping(value = "/all") - @PreAuthorize("hasAnyRole('admin','ROLES_ALL','user:all','user:add','user:edit')") + @PreAuthorize("@el.check('roles:list','user:add','user:edit')") public ResponseEntity getAll(@PageableDefault(value = 2000, sort = {"level"}, direction = Sort.Direction.ASC) Pageable pageable){ return new ResponseEntity<>(roleService.queryAll(pageable),HttpStatus.OK); } @@ -57,7 +57,7 @@ public class RoleController { @Log("查询角色") @ApiOperation("查询角色") @GetMapping - @PreAuthorize("hasAnyRole('admin','ROLES_ALL','ROLES_SELECT')") + @PreAuthorize("@el.check('roles:list')") public ResponseEntity getRoles(RoleQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(roleService.queryAll(criteria,pageable),HttpStatus.OK); } @@ -72,7 +72,7 @@ public class RoleController { @Log("新增角色") @ApiOperation("新增角色") @PostMapping - @PreAuthorize("hasAnyRole('admin','ROLES_ALL','ROLES_CREATE')") + @PreAuthorize("@el.check('roles:add')") public ResponseEntity create(@Validated @RequestBody Role resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); @@ -83,25 +83,16 @@ public class RoleController { @Log("修改角色") @ApiOperation("修改角色") @PutMapping - @PreAuthorize("hasAnyRole('admin','ROLES_ALL','ROLES_EDIT')") + @PreAuthorize("@el.check('roles:edit')") public ResponseEntity update(@Validated(Role.Update.class) @RequestBody Role resources){ roleService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); } - @Log("修改角色权限") - @ApiOperation("修改角色权限") - @PutMapping(value = "/permission") - @PreAuthorize("hasAnyRole('admin','ROLES_ALL','ROLES_EDIT')") - public ResponseEntity updatePermission(@RequestBody Role resources){ - roleService.updatePermission(resources,roleService.findById(resources.getId())); - return new ResponseEntity(HttpStatus.NO_CONTENT); - } - @Log("修改角色菜单") @ApiOperation("修改角色菜单") @PutMapping(value = "/menu") - @PreAuthorize("hasAnyRole('admin','ROLES_ALL','ROLES_EDIT')") + @PreAuthorize("@el.check('roles:edit')") public ResponseEntity updateMenu(@RequestBody Role resources){ roleService.updateMenu(resources,roleService.findById(resources.getId())); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -110,7 +101,7 @@ public class RoleController { @Log("删除角色") @ApiOperation("删除角色") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('admin','ROLES_ALL','ROLES_DELETE')") + @PreAuthorize("@el.check('roles:del')") public ResponseEntity delete(@PathVariable Long id){ try { roleService.delete(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java index 78bddc05..9dac0a48 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java @@ -60,7 +60,7 @@ public class UserController { @Log("导出用户数据") @ApiOperation("导出用户数据") @GetMapping(value = "/download") - @PreAuthorize("hasAnyRole('admin','user:all','user:select')") + @PreAuthorize("@el.check('user:list')") public void update(HttpServletResponse response, UserQueryCriteria criteria) throws IOException { userService.download(userService.queryAll(criteria), response); } @@ -68,26 +68,21 @@ public class UserController { @Log("查询用户") @ApiOperation("查询用户") @GetMapping - @PreAuthorize("hasAnyRole('admin','user:all','user:select')") + @PreAuthorize("@el.check('user:list')") public ResponseEntity getUsers(UserQueryCriteria criteria, Pageable pageable){ Set deptSet = new HashSet<>(); Set result = new HashSet<>(); - if (!ObjectUtils.isEmpty(criteria.getDeptId())) { deptSet.add(criteria.getDeptId()); deptSet.addAll(dataScope.getDeptChildren(deptService.findByPid(criteria.getDeptId()))); } - // 数据权限 Set deptIds = dataScope.getDeptIds(); - // 查询条件不为空并且数据权限不为空则取交集 if (!CollectionUtils.isEmpty(deptIds) && !CollectionUtils.isEmpty(deptSet)){ - // 取交集 result.addAll(deptSet); result.retainAll(deptIds); - // 若无交集,则代表无数据权限 criteria.setDeptIds(result); if(result.size() == 0){ @@ -105,7 +100,7 @@ public class UserController { @Log("新增用户") @ApiOperation("新增用户") @PostMapping - @PreAuthorize("hasAnyRole('admin','user:all','user:add')") + @PreAuthorize("@el.check('user:add')") public ResponseEntity create(@Validated @RequestBody User resources){ checkLevel(resources); return new ResponseEntity<>(userService.create(resources),HttpStatus.CREATED); @@ -114,7 +109,7 @@ public class UserController { @Log("修改用户") @ApiOperation("修改用户") @PutMapping - @PreAuthorize("hasAnyRole('admin','user:all','user:edit')") + @PreAuthorize("@el.check('user:edit')") public ResponseEntity update(@Validated(User.Update.class) @RequestBody User resources){ checkLevel(resources); userService.update(resources); @@ -124,7 +119,7 @@ public class UserController { @Log("删除用户") @ApiOperation("删除用户") @DeleteMapping(value = "/{id}") - @PreAuthorize("hasAnyRole('admin','user:all','user:del')") + @PreAuthorize("@el.check('user:del')") public ResponseEntity delete(@PathVariable Long id){ Integer currentLevel = Collections.min(roleService.findByUsers_Id(SecurityUtils.getUserId()).stream().map(RoleSmallDTO::getLevel).collect(Collectors.toList())); Integer optLevel = Collections.min(roleService.findByUsers_Id(id).stream().map(RoleSmallDTO::getLevel).collect(Collectors.toList())); @@ -171,8 +166,6 @@ public class UserController { return new ResponseEntity(HttpStatus.OK); } - - /** * 如果当前用户的角色级别低于创建用户的角色级别,则抛出权限不足的错误 * @param resources / diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/PermissionService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/PermissionService.java deleted file mode 100644 index e83b9df6..00000000 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/PermissionService.java +++ /dev/null @@ -1,32 +0,0 @@ -package me.zhengjie.modules.system.service; - -import me.zhengjie.modules.system.domain.Permission; -import me.zhengjie.modules.system.service.dto.PermissionDTO; -import me.zhengjie.modules.system.service.dto.PermissionQueryCriteria; -import java.util.List; -import java.util.Set; - -/** - * @author Zheng Jie - * @date 2018-12-08 - */ -public interface PermissionService { - - PermissionDTO findById(long id); - - PermissionDTO create(Permission resources); - - void update(Permission resources); - - void delete(Set permissions); - - Object getPermissionTree(List permissions); - - List findByPid(long pid); - - Object buildTree(List permissionDTOS); - - List queryAll(PermissionQueryCriteria criteria); - - Set getDeletePermission(List permissions, Set permissionSet); -} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java index c65be1fb..91ee0405 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java @@ -26,8 +26,6 @@ public interface RoleService { Integer findByRoles(Set roles); - void updatePermission(Role resources, RoleDTO roleDTO); - void updateMenu(Role resources, RoleDTO roleDTO); void untiedMenu(Long id); @@ -37,6 +35,4 @@ public interface RoleService { Object queryAll(RoleQueryCriteria criteria, Pageable pageable); List queryAll(RoleQueryCriteria criteria); - - void untiedPermission(Long id); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionDTO.java deleted file mode 100644 index 38a36076..00000000 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionDTO.java +++ /dev/null @@ -1,28 +0,0 @@ -package me.zhengjie.modules.system.service.dto; - -import lombok.Getter; -import lombok.Setter; - -import java.sql.Timestamp; -import java.util.List; - -/** - * @author Zheng Jie - * @date 2018-12-03 - */ -@Getter -@Setter -public class PermissionDTO{ - - private Long id; - - private String name; - - private Long pid; - - private String alias; - - private List children; - - private Timestamp createTime; -} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionQueryCriteria.java deleted file mode 100644 index 055b0ec4..00000000 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionQueryCriteria.java +++ /dev/null @@ -1,15 +0,0 @@ -package me.zhengjie.modules.system.service.dto; - -import lombok.Data; -import me.zhengjie.annotation.Query; - -/** - * 公共查询类 - */ -@Data -public class PermissionQueryCriteria { - - // 多字段模糊 - @Query(blurry = "name,alias") - private String blurry; -} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java index 59417329..56da5449 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java @@ -26,8 +26,6 @@ public class RoleDTO{ private String permission; - private Set permissions; - private Set menus; private Set depts; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java deleted file mode 100644 index 552b3f20..00000000 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java +++ /dev/null @@ -1,169 +0,0 @@ -package me.zhengjie.modules.system.service.impl; - -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.RoleService; -import me.zhengjie.modules.system.service.dto.PermissionDTO; -import me.zhengjie.modules.system.service.dto.PermissionQueryCriteria; -import me.zhengjie.modules.system.service.mapper.PermissionMapper; -import me.zhengjie.utils.QueryHelp; -import me.zhengjie.utils.ValidationUtil; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; -import org.springframework.data.domain.Sort; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import java.util.*; - -/** - * @author Zheng Jie - * @date 2018-12-03 - */ -@Service -@CacheConfig(cacheNames = "permission") -@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) -public class PermissionServiceImpl implements PermissionService { - - private final PermissionRepository permissionRepository; - - private final PermissionMapper permissionMapper; - - private final RoleService roleService; - - public PermissionServiceImpl(PermissionRepository permissionRepository, PermissionMapper permissionMapper, RoleService roleService) { - this.permissionRepository = permissionRepository; - this.permissionMapper = permissionMapper; - this.roleService = roleService; - } - - @Override - @Cacheable - public List queryAll(PermissionQueryCriteria criteria) { -// Sort sort = new Sort(Sort.Direction.DESC,"id"); - return permissionMapper.toDto(permissionRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); - } - - @Override - @Cacheable(key = "#p0") - public PermissionDTO findById(long id) { - Permission permission = permissionRepository.findById(id).orElseGet(Permission::new); - ValidationUtil.isNull(permission.getId(),"Permission","id",id); - return permissionMapper.toDto(permission); - } - - @Override - @CacheEvict(allEntries = true) - @Transactional(rollbackFor = Exception.class) - public PermissionDTO create(Permission resources) { - if(permissionRepository.findByName(resources.getName()) != null){ - throw new EntityExistException(Permission.class,"name",resources.getName()); - } - return permissionMapper.toDto(permissionRepository.save(resources)); - } - - @Override - @CacheEvict(allEntries = true) - @Transactional(rollbackFor = Exception.class) - public void update(Permission resources) { - Permission permission = permissionRepository.findById(resources.getId()).orElseGet(Permission::new); - if(resources.getId().equals(resources.getPid())) { - throw new BadRequestException("上级不能为自己"); - } - ValidationUtil.isNull(permission.getId(),"Permission","id",resources.getId()); - - Permission permission1 = permissionRepository.findByName(resources.getName()); - - if(permission1 != null && !permission1.getId().equals(permission.getId())){ - throw new EntityExistException(Permission.class,"name",resources.getName()); - } - - permission.setName(resources.getName()); - permission.setAlias(resources.getAlias()); - permission.setPid(resources.getPid()); - permissionRepository.save(permission); - } - - @Override - public Set getDeletePermission(List permissions, Set permissionSet) { - // 递归找出待删除的菜单 - for (Permission permission : permissions) { - permissionSet.add(permission); - List permissionList = permissionRepository.findByPid(permission.getId()); - if(permissionList!=null && permissionList.size()!=0){ - getDeletePermission(permissionList, permissionSet); - } - } - return permissionSet; - } - - @Override - @CacheEvict(allEntries = true) - @Transactional(rollbackFor = Exception.class) - public void delete(Set permissions) { - for (Permission permission : permissions) { - roleService.untiedPermission(permission.getId()); - permissionRepository.delete(permission); - } - } - - @Override - @Cacheable(key = "'tree'") - public Object getPermissionTree(List permissions) { - List> list = new LinkedList<>(); - permissions.forEach(permission -> { - if (permission!=null){ - List permissionList = permissionRepository.findByPid(permission.getId()); - Map map = new HashMap<>(); - map.put("id",permission.getId()); - map.put("label",permission.getAlias()); - if(permissionList!=null && permissionList.size()!=0){ - map.put("children",getPermissionTree(permissionList)); - } - list.add(map); - } - } - ); - return list; - } - - @Override - @Cacheable(key = "'pid:'+#p0") - public List findByPid(long pid) { - return permissionRepository.findByPid(pid); - } - - @Override - @Cacheable - public Object buildTree(List permissionDTOS) { - - List trees = new ArrayList<>(); - - for (PermissionDTO permissionDTO : permissionDTOS) { - - if ("0".equals(permissionDTO.getPid().toString())) { - trees.add(permissionDTO); - } - - for (PermissionDTO it : permissionDTOS) { - if (it.getPid().equals(permissionDTO.getId())) { - if (permissionDTO.getChildren() == null) { - permissionDTO.setChildren(new ArrayList<>()); - } - permissionDTO.getChildren().add(it); - } - } - } - - Integer totalElements = permissionDTOS.size(); - - Map map = new HashMap<>(); - map.put("content",trees.size() == 0?permissionDTOS:trees); - map.put("totalElements",totalElements); - return map; - } -} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java index d1aaca57..2a1f1a2a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java @@ -102,14 +102,6 @@ public class RoleServiceImpl implements RoleService { roleRepository.save(role); } - @Override - @CacheEvict(allEntries = true) - public void updatePermission(Role resources, RoleDTO roleDTO) { - Role role = roleMapper.toEntity(roleDTO); - role.setPermissions(resources.getPermissions()); - roleRepository.save(role); - } - @Override @CacheEvict(allEntries = true) public void updateMenu(Role resources, RoleDTO roleDTO) { @@ -125,13 +117,6 @@ public class RoleServiceImpl implements RoleService { roleRepository.untiedMenu(id); } - @Override - @CacheEvict(allEntries = true) - @Transactional(rollbackFor = Exception.class) - public void untiedPermission(Long id) { - roleRepository.untiedPermission(id); - } - @Override @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/PermissionMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/PermissionMapper.java deleted file mode 100644 index 6d8f32f2..00000000 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/PermissionMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package me.zhengjie.modules.system.service.mapper; - -import me.zhengjie.modules.system.domain.Permission; -import me.zhengjie.base.BaseMapper; -import me.zhengjie.modules.system.service.dto.PermissionDTO; -import org.mapstruct.Mapper; -import org.mapstruct.ReportingPolicy; - -/** - * @author Zheng Jie - * @date 2018-11-23 - */ -@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface PermissionMapper extends BaseMapper { - -} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleMapper.java index 248b1ed0..d1533b0c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleMapper.java @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2018-11-23 */ -@Mapper(componentModel = "spring", uses = {PermissionMapper.class, MenuMapper.class, DeptMapper.class}, unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring", uses = {MenuMapper.class, DeptMapper.class}, unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface RoleMapper extends BaseMapper { } diff --git a/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl b/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl index 2734a481..7d4ada7e 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl @@ -30,7 +30,7 @@ public class ${className}Controller { @GetMapping @Log("查询${className}") @ApiOperation("查询${className}") - @PreAuthorize("hasAnyRole('admin','${upperCaseClassName}_ALL','${upperCaseClassName}_SELECT')") + @PreAuthorize("@el.check('${changeClassName}:list'") public ResponseEntity get${className}s(${className}QueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(${changeClassName}Service.queryAll(criteria,pageable),HttpStatus.OK); } @@ -38,7 +38,7 @@ public class ${className}Controller { @PostMapping @Log("新增${className}") @ApiOperation("新增${className}") - @PreAuthorize("hasAnyRole('admin','${upperCaseClassName}_ALL','${upperCaseClassName}_CREATE')") + @PreAuthorize("@el.check('${changeClassName}:add')") public ResponseEntity create(@Validated @RequestBody ${className} resources){ return new ResponseEntity<>(${changeClassName}Service.create(resources),HttpStatus.CREATED); } @@ -46,7 +46,7 @@ public class ${className}Controller { @PutMapping @Log("修改${className}") @ApiOperation("修改${className}") - @PreAuthorize("hasAnyRole('admin','${upperCaseClassName}_ALL','${upperCaseClassName}_EDIT')") + @PreAuthorize("@el.check('${changeClassName}:edit')") public ResponseEntity update(@Validated @RequestBody ${className} resources){ ${changeClassName}Service.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); @@ -55,7 +55,7 @@ public class ${className}Controller { @DeleteMapping(value = "/{${pkChangeColName}}") @Log("删除${className}") @ApiOperation("删除${className}") - @PreAuthorize("hasAnyRole('admin','${upperCaseClassName}_ALL','${upperCaseClassName}_DELETE')") + @PreAuthorize("@el.check('${changeClassName}:del')") public ResponseEntity delete(@PathVariable ${pkColumnType} ${pkChangeColName}){ ${changeClassName}Service.delete(${pkChangeColName}); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-system/src/main/resources/template/generator/front/index.ftl b/eladmin-system/src/main/resources/template/generator/front/index.ftl index c5e6ab88..725a8cbe 100644 --- a/eladmin-system/src/main/resources/template/generator/front/index.ftl +++ b/eladmin-system/src/main/resources/template/generator/front/index.ftl @@ -14,7 +14,7 @@
- +