提交 65d2f0c1 作者: 方治民

feat: 依赖升级、完善 util/redis/minio 模块

上级 5f2d42ef
...@@ -23,10 +23,8 @@ dependencies { ...@@ -23,10 +23,8 @@ dependencies {
// https://mvnrepository.com/artifact/org.n52.jackson/jackson-datatype-jts/1.2.10 // https://mvnrepository.com/artifact/org.n52.jackson/jackson-datatype-jts/1.2.10
implementation("org.n52.jackson:jackson-datatype-jts:1.2.10") { implementation("org.n52.jackson:jackson-datatype-jts:1.2.10") {
exclude group: 'com.fasterxml.jackson.core', module: 'jackson-databind' exclude group: 'com.fasterxml.jackson.core'
exclude group: 'com.fasterxml.jackson.core', module: 'jackson-annotations' exclude group: 'org.locationtech.jts'
exclude group: 'com.fasterxml.jackson.core', module: 'jackson-core'
exclude group: 'org.locationtech.jts', module: 'jts-core'
} }
} }
...@@ -35,7 +35,7 @@ public class RequestAspect { ...@@ -35,7 +35,7 @@ public class RequestAspect {
Boolean debug; Boolean debug;
@Pointcut( @Pointcut(
"@annotation(org.springframework.web.bind.annotation.PostMapping) || @annotation(org.springframework.web.bind.annotation.GetMapping) || @annotation(org.springframework.web.bind.annotation.PutMapping) || @annotation(org.springframework.web.bind.annotation.DeleteMapping) || @annotation(org.springframework.web.bind.annotation.PatchMapping) || @annotation(org.springframework.web.bind.annotation.ExceptionHandler)" "@annotation(org.springframework.web.bind.annotation.RequestMapping) || @annotation(org.springframework.web.bind.annotation.PostMapping) || @annotation(org.springframework.web.bind.annotation.GetMapping) || @annotation(org.springframework.web.bind.annotation.PutMapping) || @annotation(org.springframework.web.bind.annotation.DeleteMapping) || @annotation(org.springframework.web.bind.annotation.PatchMapping) || @annotation(org.springframework.web.bind.annotation.ExceptionHandler)"
) )
public void apiPointCut() {} public void apiPointCut() {}
...@@ -43,6 +43,7 @@ public class RequestAspect { ...@@ -43,6 +43,7 @@ public class RequestAspect {
public Object around(ProceedingJoinPoint point) throws Throwable { public Object around(ProceedingJoinPoint point) throws Throwable {
HttpServletRequest request = getRequest(); HttpServletRequest request = getRequest();
// 计算接口执行耗时
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
Object result = point.proceed(); Object result = point.proceed();
long end = System.currentTimeMillis(); long end = System.currentTimeMillis();
......
...@@ -37,7 +37,7 @@ public class IdsParam implements Serializable { ...@@ -37,7 +37,7 @@ public class IdsParam implements Serializable {
String ids; String ids;
/** /**
* 获取 Long 类型的 ID 集合 * 获取 String 类型的 ID 集合
* @return ID 集合 * @return ID 集合
*/ */
public Set<String> toIds() { public Set<String> toIds() {
......
...@@ -13,7 +13,7 @@ import io.swagger.annotations.ApiOperation; ...@@ -13,7 +13,7 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import javax.annotation.Resource; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
...@@ -26,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -26,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile;
/** /**
* Minio S3 * Minio S3
* @author Jim
*/ */
@Slf4j @Slf4j
...@@ -33,12 +34,12 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -33,12 +34,12 @@ import org.springframework.web.multipart.MultipartFile;
@SuppressWarnings({ "deprecation" }) @SuppressWarnings({ "deprecation" })
@ApiSupport(order = -98) @ApiSupport(order = -98)
@Api(tags = "文件管理", description = "file") @Api(tags = "文件管理", description = "file")
@RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/common/file/") @RequestMapping("/common/file/")
public class MinioController { public class MinioController {
@Resource final Minio minio;
Minio minio;
/** /**
* minio 上传文件,成功返回文件 url * minio 上传文件,成功返回文件 url
......
...@@ -84,6 +84,23 @@ public final class Redis { ...@@ -84,6 +84,23 @@ public final class Redis {
* 普通缓存获取 * 普通缓存获取
* *
* @param key 键 * @param key 键
* @param type 类型
* @return 值
*/
@SuppressWarnings("unchecked")
public <T> T get(String key, Class<T> type) {
if (key == null) {
return null;
}
Object value = redisTemplate.opsForValue().get(key);
return (T) value;
}
/**
* 普通缓存获取
*
* @param key 键
* @return 值 * @return 值
*/ */
public String getString(String key) { public String getString(String key) {
......
dependencies { dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-aop'
// hutool // hutool
implementation "cn.hutool:hutool-core:${hutoolVersion}" implementation "cn.hutool:hutool-core:${hutoolVersion}"
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.common.annotation;
import java.lang.annotation.*;
/**
* 耗时计算注解
*
* @author Jim
* @version 0.1
* 2022/4/7 15:21
*/
@SuppressWarnings({ "unused" })
@Target({ ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Times {
/**
* 描述
*/
String value() default "";
}
/* (C) 2021 YiRing, Inc. */
package com.yiring.common.aspect;
import cn.hutool.core.util.StrUtil;
import com.yiring.common.annotation.Times;
import java.lang.reflect.Method;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
/**
* 耗时计算注解切面
*
* @author ifzm
* @version 0.1
*/
@Slf4j
@Aspect
@Component
public class TimesAspect {
@Pointcut("@annotation(com.yiring.common.annotation.Times)")
public void times() {}
@Around("times()")
public Object around(ProceedingJoinPoint point) throws Throwable {
long start = System.currentTimeMillis();
try {
return point.proceed();
} finally {
long end = System.currentTimeMillis();
log.info("[Times] {}: {} ms", getTimesValue(point), end - start);
}
}
public String getTimesValue(JoinPoint joinPoint) {
// 获取切入点的目标类
Class<?> targetClass = joinPoint.getTarget().getClass();
// 获取切入方法名
String methodName = joinPoint.getSignature().getName();
// 获取切入方法参数
Object[] arguments = joinPoint.getArgs();
// 获取目标类的所有方法
Method[] methods = targetClass.getMethods();
String timesValue = methodName;
for (Method method : methods) {
// 方法名相同、包含目标注解、方法参数个数相同(避免有重载)
if (
method.getName().equals(methodName) &&
method.isAnnotationPresent(Times.class) &&
method.getParameterTypes().length == arguments.length
) {
String value = method.getAnnotation(Times.class).value();
if (StrUtil.isNotEmpty(value)) {
timesValue = value;
}
}
}
return timesValue;
}
}
/* (C) 2021 YiRing, Inc. */
package com.yiring.common.aspect;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.stereotype.Component;
/**
* XxlJob 注解切面,修复无法输出异常的问题
*
* @author ifzm
* @version 0.1
*/
@Slf4j
@Aspect
@Component
@ConditionalOnClass(name = "com.xxl.job.core.handler.annotation.XxlJob")
public class XxlJobAspect {
@Pointcut("@annotation(com.xxl.job.core.handler.annotation.XxlJob)")
public void log() {}
@Around("log()")
public Object around(ProceedingJoinPoint point) throws Throwable {
try {
return point.proceed();
} catch (Exception e) {
log.error("XxlJob Execute Error: " + e.getMessage(), e);
throw e;
}
}
}
...@@ -160,6 +160,11 @@ public class Commons { ...@@ -160,6 +160,11 @@ public class Commons {
@FunctionalInterface @FunctionalInterface
public interface CallbackFunction<S, T> { public interface CallbackFunction<S, T> {
/**
* 执行方法
* @param s 源对象
* @param t 目标对象
*/
void apply(S s, T t); void apply(S s, T t);
} }
} }
...@@ -5,21 +5,21 @@ plugins { ...@@ -5,21 +5,21 @@ plugins {
// https://plugins.gradle.org/plugin/io.spring.dependency-management // https://plugins.gradle.org/plugin/io.spring.dependency-management
id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'io.spring.dependency-management' version '1.0.11.RELEASE'
// https://plugins.gradle.org/plugin/com.diffplug.spotless // https://plugins.gradle.org/plugin/com.diffplug.spotless
id "com.diffplug.spotless" version "6.7.0" id "com.diffplug.spotless" version "6.7.2"
// https://plugins.gradle.org/plugin/com.github.spotbugs
// id "com.github.spotbugs" version "5.0.7"
} }
ext { ext {
// Spotless // Spotless
// https://www.npmjs.com/package/prettier // https://www.npmjs.com/package/prettier
prettierVersion = '2.6.2' prettierVersion = '2.7.1'
// https://www.npmjs.com/package/prettier-plugin-java // https://www.npmjs.com/package/prettier-plugin-java
prettierJavaVersion = '1.6.2' prettierJavaVersion = '1.6.2'
// SpringCloud
// https://start.spring.io/ // https://start.spring.io/
springCloudVersion = '2021.0.3' springCloudVersion = '2021.0.3'
// Dependencies
// https://mvnrepository.com/artifact/com.github.xiaoymin/knife4j-spring-boot-starter // https://mvnrepository.com/artifact/com.github.xiaoymin/knife4j-spring-boot-starter
knife4jVersion = '2.0.9' knife4jVersion = '2.0.9'
// https://mvnrepository.com/artifact/io.swagger/swagger-annotations // https://mvnrepository.com/artifact/io.swagger/swagger-annotations
...@@ -27,15 +27,15 @@ ext { ...@@ -27,15 +27,15 @@ ext {
// https://mvnrepository.com/artifact/cn.dev33/sa-token-spring-boot-starter // https://mvnrepository.com/artifact/cn.dev33/sa-token-spring-boot-starter
saTokenVersion = '1.30.0' saTokenVersion = '1.30.0'
// https://mvnrepository.com/artifact/cn.hutool/hutool-all // https://mvnrepository.com/artifact/cn.hutool/hutool-all
hutoolVersion = '5.8.2' hutoolVersion = '5.8.4.M1'
// https://mvnrepository.com/artifact/com.alibaba/fastjson // https://mvnrepository.com/artifact/com.alibaba/fastjson
fastJsonVersion = '2.0.6' fastJsonVersion = '2.0.7'
// https://mvnrepository.com/artifact/com.xuxueli/xxl-job-core // https://mvnrepository.com/artifact/com.xuxueli/xxl-job-core
xxlJobVersion = '2.3.1' xxlJobVersion = '2.3.1'
// https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp // https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
okhttpVersion = '4.9.3' okhttpVersion = '4.9.3'
// https://mvnrepository.com/artifact/io.minio/minio // https://mvnrepository.com/artifact/io.minio/minio
minioVersion = '8.4.1' minioVersion = '8.4.2'
// https://mvnrepository.com/artifact/com.vladmihalcea/hibernate-types-55 // https://mvnrepository.com/artifact/com.vladmihalcea/hibernate-types-55
hibernateTypesVersion = '2.16.2' hibernateTypesVersion = '2.16.2'
// https://mvnrepository.com/artifact/org.hibernate/hibernate-spatial // https://mvnrepository.com/artifact/org.hibernate/hibernate-spatial
...@@ -65,7 +65,6 @@ subprojects { ...@@ -65,7 +65,6 @@ subprojects {
apply plugin: 'org.springframework.boot' apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management' apply plugin: 'io.spring.dependency-management'
apply plugin: "com.diffplug.spotless" apply plugin: "com.diffplug.spotless"
// apply plugin: "com.github.spotbugs"
configurations { configurations {
compileOnly { compileOnly {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论