Skip to content

Commit e85a819

Browse files
committed
Merge branch 'dev'
2 parents 98776c5 + 1e88a6a commit e85a819

44 files changed

Lines changed: 425 additions & 384 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737

3838
### 线上 demo
3939

40-
[http://face.cms.7yue.pro/](http://face.cms.7yue.pro/)
40+
[http://face.cms.talelin.com/](http://face.cms.talelin.com/)
4141

4242
### 文档地址
4343

pom.xml

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.springframework.boot</groupId>
77
<artifactId>spring-boot-starter-parent</artifactId>
8-
<version>2.3.3.RELEASE</version>
8+
<version>2.4.3</version>
99
<relativePath/>
1010
</parent>
1111

@@ -22,8 +22,7 @@
2222
<java.version>1.8</java.version>
2323
<maven.compiler.source>1.8</maven.compiler.source>
2424
<maven.compiler.target>1.8</maven.compiler.target>
25-
<mybatis-plus.version>3.4.0</mybatis-plus.version>
26-
<hutool.version>5.4.2</hutool.version>
25+
<mybatis-plus.version>3.4.1</mybatis-plus.version>
2726
<freemarker.version>2.3.30</freemarker.version>
2827
</properties>
2928

@@ -74,16 +73,10 @@
7473
<scope>provided</scope>
7574
</dependency>
7675

77-
<dependency>
78-
<groupId>cn.hutool</groupId>
79-
<artifactId>hutool-core</artifactId>
80-
<version>${hutool.version}</version>
81-
</dependency>
82-
8376
<dependency>
8477
<groupId>com.qiniu</groupId>
8578
<artifactId>qiniu-java-sdk</artifactId>
86-
<version>7.3.0</version>
79+
<version>7.4.0</version>
8780
</dependency>
8881

8982
<dependency>

src/main/java/io/github/talelin/latticy/bo/GroupPermissionBO.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
package io.github.talelin.latticy.bo;
22

3-
import cn.hutool.core.bean.BeanUtil;
43
import io.github.talelin.latticy.model.GroupDO;
54
import io.github.talelin.latticy.model.PermissionDO;
65
import lombok.AllArgsConstructor;
76
import lombok.Data;
87
import lombok.NoArgsConstructor;
8+
import org.springframework.beans.BeanUtils;
99

1010
import java.util.List;
1111

1212
/**
1313
* @author pedro@TaleLin
1414
* @author Juzi@TaleLin
15+
* @author colorful@TaleLin
1516
*/
1617
@Data
1718
@NoArgsConstructor
@@ -26,7 +27,7 @@ public class GroupPermissionBO {
2627
private List<PermissionDO> permissions;
2728

2829
public GroupPermissionBO(GroupDO group, List<PermissionDO> permissions) {
29-
BeanUtil.copyProperties(group, this);
30+
BeanUtils.copyProperties(group, this);
3031
this.permissions = permissions;
3132
}
3233
}

src/main/java/io/github/talelin/latticy/common/aop/ResultAspect.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package io.github.talelin.latticy.common.aop;
22

3-
import cn.hutool.core.util.StrUtil;
43
import io.github.talelin.latticy.common.configuration.CodeMessageConfiguration;
54
import io.github.talelin.latticy.vo.UnifyResponseVO;
65
import org.aspectj.lang.annotation.AfterReturning;
76
import org.aspectj.lang.annotation.Aspect;
87
import org.springframework.stereotype.Component;
8+
import org.springframework.util.StringUtils;
99

1010
/**
1111
* 处理返回结果为 UnifyResponseVO 的 Controller
@@ -21,14 +21,14 @@ public class ResultAspect {
2121
@AfterReturning(returning = "result", pointcut = "execution(public * io.github.talelin.latticy.controller..*.*(..))")
2222
public void doAfterReturning(UnifyResponseVO<String> result) {
2323
int code = result.getCode();
24-
String oldMessage = result.getMessage();
24+
String messageOfVO = result.getMessage();
2525
// code-message.properties 中配置的 message
26-
String newMessage = CodeMessageConfiguration.getMessage(code);
26+
String messageOfConfiguration = CodeMessageConfiguration.getMessage(code);
2727

2828
// 如果 code-message.properties 中指定了相应的 message 并且 UnifyResponseVO 的 message 为null
29-
// 则使用 newMessage 替换 oldMessage
30-
if (StrUtil.isNotBlank(newMessage) && StrUtil.isBlank(oldMessage)) {
31-
result.setMessage(newMessage);
29+
// 则使用 messageOfConfiguration 替换 messageOfVO
30+
if (StringUtils.hasText(messageOfConfiguration) && !StringUtils.hasText(messageOfVO)) {
31+
result.setMessage(messageOfConfiguration);
3232
}
3333
}
3434
}

src/main/java/io/github/talelin/latticy/common/configuration/CommonConfiguration.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,50 @@
11
package io.github.talelin.latticy.common.configuration;
22

3+
import com.baomidou.mybatisplus.annotation.DbType;
4+
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
35
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
46
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
5-
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
7+
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
8+
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
69
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
710
import io.github.talelin.autoconfigure.bean.PermissionMetaCollector;
811
import io.github.talelin.latticy.common.interceptor.RequestLogInterceptor;
9-
import io.github.talelin.latticy.module.file.FileProperties;
1012
import io.github.talelin.latticy.module.log.MDCAccessServletFilter;
1113
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
12-
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1314
import org.springframework.boot.web.servlet.FilterRegistrationBean;
1415
import org.springframework.context.annotation.Bean;
1516
import org.springframework.context.annotation.Configuration;
1617

1718
/**
1819
* @author pedro@TaleLin
20+
* @author colorful@TaleLin
1921
*/
2022
@Configuration(proxyBeanMethods = false)
21-
@EnableConfigurationProperties(FileProperties.class)
2223
public class CommonConfiguration {
2324

2425
@Bean
2526
public RequestLogInterceptor requestLogInterceptor() {
2627
return new RequestLogInterceptor();
2728
}
2829

30+
/**
31+
* 新的分页插件,一缓和二缓遵循mybatis的规则
32+
* 需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
33+
* 参考链接:https://mp.baomidou.com/guide/interceptor.htm
34+
*/
35+
@Bean
36+
public MybatisPlusInterceptor mybatisPlusInterceptor() {
37+
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
38+
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
39+
return interceptor;
40+
}
41+
42+
/**
43+
* 参考链接:https://mp.baomidou.com/guide/interceptor.htm
44+
*/
2945
@Bean
30-
public PaginationInterceptor paginationInterceptor() {
31-
return new PaginationInterceptor();
46+
public ConfigurationCustomizer configurationCustomizer() {
47+
return configuration -> configuration.setUseDeprecatedExecutor(false);
3248
}
3349

3450
@Bean

src/main/java/io/github/talelin/latticy/common/configuration/WebConfiguration.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import io.github.talelin.latticy.common.interceptor.RequestLogInterceptor;
44
import io.github.talelin.autoconfigure.interceptor.AuthorizeInterceptor;
55
import io.github.talelin.autoconfigure.interceptor.LogInterceptor;
6+
import io.github.talelin.latticy.module.file.FileUtil;
67
import lombok.extern.slf4j.Slf4j;
7-
import cn.hutool.core.io.FileUtil;
88
import org.springframework.beans.factory.annotation.Autowired;
99
import org.springframework.beans.factory.annotation.Value;
1010
import org.springframework.context.annotation.Configuration;
@@ -20,6 +20,7 @@
2020
* Spring MVC 配置
2121
*
2222
* @author pedro@TaleLin
23+
* @author colorful@TaleLin
2324
*/
2425
@Configuration(proxyBeanMethods = false)
2526
@Slf4j
@@ -55,7 +56,7 @@ public class WebConfiguration implements WebMvcConfigurer {
5556
@Override
5657
public void addCorsMappings(CorsRegistry registry) {
5758
registry.addMapping("/**")
58-
.allowedOrigins("*")
59+
.allowedOriginPatterns("*")
5960
.allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
6061
.allowCredentials(true)
6162
.maxAge(3600)
@@ -94,7 +95,7 @@ private String getDirServePath() {
9495
* 获得文件夹的绝对路径
9596
*/
9697
private String getAbsDir() {
97-
if (FileUtil.isAbsolutePath(dir)) {
98+
if (FileUtil.isAbsolute(dir)) {
9899
return dir;
99100
}
100101
String cmd = System.getProperty("user.dir");

src/main/java/io/github/talelin/latticy/common/enumeration/GroupLevelEnum.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.github.talelin.latticy.common.enumeration;
22

3-
import com.baomidou.mybatisplus.core.enums.IEnum;
3+
4+
import com.baomidou.mybatisplus.annotation.IEnum;
45

56
/**
67
* @author colorful@TaleLin
@@ -30,7 +31,7 @@ public enum GroupLevelEnum implements IEnum<Integer> {
3031
* MybatisEnumTypeHandler 转换时调用此方法
3132
*
3233
* @return 枚举对应的 code 值
33-
* @see com.baomidou.mybatisplus.extension.handlers.MybatisEnumTypeHandler
34+
* @see com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler
3435
*/
3536
@Override
3637
public Integer getValue() {

src/main/java/io/github/talelin/latticy/common/exception/RestExceptionHandler.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.github.talelin.latticy.common.exception;
22

3-
import cn.hutool.core.util.StrUtil;
43
import io.github.talelin.autoconfigure.bean.Code;
54
import io.github.talelin.autoconfigure.exception.HttpException;
65
import io.github.talelin.latticy.common.configuration.CodeMessageConfiguration;
@@ -11,6 +10,7 @@
1110
import org.springframework.core.annotation.Order;
1211
import org.springframework.http.HttpStatus;
1312
import org.springframework.http.converter.HttpMessageNotReadableException;
13+
import org.springframework.util.StringUtils;
1414
import org.springframework.validation.BindingResult;
1515
import org.springframework.validation.FieldError;
1616
import org.springframework.validation.ObjectError;
@@ -60,7 +60,7 @@ public UnifyResponseVO processException(HttpException exception, HttpServletRequ
6060
unifyResponse.setCode(code);
6161
response.setStatus(exception.getHttpCode());
6262
String errorMessage = CodeMessageConfiguration.getMessage(code);
63-
if (StrUtil.isBlank(errorMessage) || !defaultMessage) {
63+
if (!StringUtils.hasText(errorMessage) || !defaultMessage) {
6464
unifyResponse.setMessage(exception.getMessage());
6565
log.error("", exception);
6666
} else {
@@ -80,7 +80,7 @@ public UnifyResponseVO processException(ConstraintViolationException exception,
8080
exception.getConstraintViolations().forEach(constraintViolation -> {
8181
String template = constraintViolation.getMessage();
8282
String path = constraintViolation.getPropertyPath().toString();
83-
msg.put(StrUtil.toUnderlineCase(path), template);
83+
msg.put(com.baomidou.mybatisplus.core.toolkit.StringUtils.camelToUnderline(path), template);
8484
});
8585
UnifyResponseVO unifyResponse = new UnifyResponseVO();
8686
unifyResponse.setRequest(getSimpleRequest(request));
@@ -99,7 +99,7 @@ public UnifyResponseVO processException(NoHandlerFoundException exception, HttpS
9999
UnifyResponseVO unifyResponse = new UnifyResponseVO();
100100
unifyResponse.setRequest(getSimpleRequest(request));
101101
String message = CodeMessageConfiguration.getMessage(10025);
102-
if (StrUtil.isBlank(message)) {
102+
if (!StringUtils.hasText(message)) {
103103
unifyResponse.setMessage(exception.getMessage());
104104
} else {
105105
unifyResponse.setMessage(message);
@@ -119,7 +119,7 @@ public UnifyResponseVO processException(MissingServletRequestParameterException
119119
result.setRequest(getSimpleRequest(request));
120120

121121
String errorMessage = CodeMessageConfiguration.getMessage(10150);
122-
if (StrUtil.isBlank(errorMessage)) {
122+
if (!StringUtils.hasText(errorMessage)) {
123123
result.setMessage(exception.getMessage());
124124
} else {
125125
result.setMessage(errorMessage + exception.getParameterName());
@@ -138,7 +138,7 @@ public UnifyResponseVO processException(MethodArgumentTypeMismatchException exce
138138
UnifyResponseVO result = new UnifyResponseVO();
139139
result.setRequest(getSimpleRequest(request));
140140
String errorMessage = CodeMessageConfiguration.getMessage(10160);
141-
if (StrUtil.isBlank(errorMessage)) {
141+
if (!StringUtils.hasText(errorMessage)) {
142142
result.setMessage(exception.getMessage());
143143
} else {
144144
result.setMessage(exception.getValue() + errorMessage);
@@ -166,17 +166,19 @@ public UnifyResponseVO processException(ServletException exception, HttpServletR
166166
* MethodArgumentNotValidException
167167
*/
168168
@ExceptionHandler({MethodArgumentNotValidException.class})
169-
public UnifyResponseVO processException(MethodArgumentNotValidException exception, HttpServletRequest request, HttpServletResponse response) {
169+
public UnifyResponseVO processException(
170+
MethodArgumentNotValidException exception, HttpServletRequest request, HttpServletResponse response) {
170171
log.error("", exception);
171172
BindingResult bindingResult = exception.getBindingResult();
172173
List<ObjectError> errors = bindingResult.getAllErrors();
173174
Map<String, Object> msg = new HashMap<>();
174175
errors.forEach(error -> {
175176
if (error instanceof FieldError) {
176177
FieldError fieldError = (FieldError) error;
177-
msg.put(StrUtil.toUnderlineCase(fieldError.getField()), fieldError.getDefaultMessage());
178+
msg.put(com.baomidou.mybatisplus.core.toolkit.StringUtils.camelToUnderline(fieldError.getField()),
179+
fieldError.getDefaultMessage());
178180
} else {
179-
msg.put(StrUtil.toUnderlineCase(error.getObjectName()), error.getDefaultMessage());
181+
msg.put(com.baomidou.mybatisplus.core.toolkit.StringUtils.camelToUnderline(error.getObjectName()), error.getDefaultMessage());
180182
}
181183
});
182184
UnifyResponseVO result = new UnifyResponseVO();
@@ -201,7 +203,7 @@ public UnifyResponseVO processException(HttpMessageNotReadableException exceptio
201203
String msg = this.convertMessage(cause);
202204
result.setMessage(msg);
203205
} else {
204-
if (StrUtil.isBlank(errorMessage)) {
206+
if (!StringUtils.hasText(errorMessage)) {
205207
result.setMessage(exception.getMessage());
206208
} else {
207209
result.setMessage(errorMessage);
@@ -235,7 +237,7 @@ public UnifyResponseVO processException(MaxUploadSizeExceededException exception
235237
UnifyResponseVO result = new UnifyResponseVO();
236238
result.setRequest(getSimpleRequest(request));
237239
String errorMessage = CodeMessageConfiguration.getMessage(10180);
238-
if (StrUtil.isBlank(errorMessage)) {
240+
if (!StringUtils.hasText(errorMessage)) {
239241
result.setMessage(exception.getMessage());
240242
} else {
241243
result.setMessage(errorMessage + maxFileSize);

src/main/java/io/github/talelin/latticy/common/interceptor/LoggerImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
/**
2121
* @author pedro@TaleLin
2222
* @author Juzi@TaleLin
23+
* @author colorful@TaleLin
2324
*/
2425
@Slf4j
2526
@Component
@@ -40,7 +41,7 @@ public void handle(PermissionMeta meta, Logger logger, HttpServletRequest reques
4041
template = this.parseTemplate(template, user, request, response);
4142
String permission = "";
4243
if (meta != null) {
43-
permission = StringUtils.isEmpty(meta.value()) ? meta.value() : meta.value();
44+
permission = !StringUtils.hasLength(meta.value()) ? meta.value() : meta.value();
4445
}
4546
Integer userId = user.getId();
4647
String username = user.getUsername();

src/main/java/io/github/talelin/latticy/common/interceptor/RequestLogInterceptor.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
package io.github.talelin.latticy.common.interceptor;
22

33
import lombok.extern.slf4j.Slf4j;
4-
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
4+
import org.springframework.web.servlet.AsyncHandlerInterceptor;
55

66
import javax.servlet.http.HttpServletRequest;
77
import javax.servlet.http.HttpServletResponse;
88

99
/**
1010
* @author pedro@TaleLin
11+
* @author colorful@TaleLin
1112
*/
1213
@Slf4j
13-
public class RequestLogInterceptor extends HandlerInterceptorAdapter {
14+
public class RequestLogInterceptor implements AsyncHandlerInterceptor {
1415

1516

1617
private ThreadLocal<Long> startTime = new ThreadLocal<>();
1718

1819
@Override
1920
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
2021
startTime.set(System.currentTimeMillis());
21-
return super.preHandle(request, response, handler);
22+
return true;
2223
}
2324

2425
@Override
2526
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
26-
super.afterCompletion(request, response, handler, ex);
2727
log.info("[{}] -> [{}] from: {} costs: {}ms",
2828
request.getMethod(),
2929
request.getServletPath(),

0 commit comments

Comments
 (0)