Skip to content

Commit c4144e1

Browse files
committed
Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
2 parents a2dcbd7 + f05a66f commit c4144e1

8 files changed

Lines changed: 143 additions & 14 deletions

File tree

yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,30 +74,30 @@ public static boolean isExpired(LocalDateTime time) {
7474
* 创建指定时间
7575
*
7676
* @param year 年
77-
* @param mouth
77+
* @param month
7878
* @param day 日
7979
* @return 指定时间
8080
*/
81-
public static Date buildTime(int year, int mouth, int day) {
82-
return buildTime(year, mouth, day, 0, 0, 0);
81+
public static Date buildTime(int year, int month, int day) {
82+
return buildTime(year, month, day, 0, 0, 0);
8383
}
8484

8585
/**
8686
* 创建指定时间
8787
*
8888
* @param year 年
89-
* @param mouth
89+
* @param month
9090
* @param day 日
9191
* @param hour 小时
9292
* @param minute 分钟
9393
* @param second 秒
9494
* @return 指定时间
9595
*/
96-
public static Date buildTime(int year, int mouth, int day,
96+
public static Date buildTime(int year, int month, int day,
9797
int hour, int minute, int second) {
9898
Calendar calendar = Calendar.getInstance();
9999
calendar.set(Calendar.YEAR, year);
100-
calendar.set(Calendar.MONTH, mouth - 1);
100+
calendar.set(Calendar.MONTH, month - 1);
101101
calendar.set(Calendar.DAY_OF_MONTH, day);
102102
calendar.set(Calendar.HOUR_OF_DAY, hour);
103103
calendar.set(Calendar.MINUTE, minute);

yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/LocalDateTimeUtils.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,17 @@ public static boolean afterNow(LocalDateTime date) {
6969
* 创建指定时间
7070
*
7171
* @param year 年
72-
* @param mouth
72+
* @param month
7373
* @param day 日
7474
* @return 指定时间
7575
*/
76-
public static LocalDateTime buildTime(int year, int mouth, int day) {
77-
return LocalDateTime.of(year, mouth, day, 0, 0, 0);
76+
public static LocalDateTime buildTime(int year, int month, int day) {
77+
return LocalDateTime.of(year, month, day, 0, 0, 0);
7878
}
7979

80-
public static LocalDateTime[] buildBetweenTime(int year1, int mouth1, int day1,
81-
int year2, int mouth2, int day2) {
82-
return new LocalDateTime[]{buildTime(year1, mouth1, day1), buildTime(year2, mouth2, day2)};
80+
public static LocalDateTime[] buildBetweenTime(int year1, int month1, int day1,
81+
int year2, int month2, int day2) {
82+
return new LocalDateTime[]{buildTime(year1, month1, day1), buildTime(year2, month2, day2)};
8383
}
8484

8585
/**

yudao-framework/yudao-spring-boot-starter-excel/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@
4646
<artifactId>easyexcel</artifactId>
4747
</dependency>
4848

49+
<dependency>
50+
<groupId>jakarta.validation</groupId>
51+
<artifactId>jakarta.validation-api</artifactId>
52+
<scope>provided</scope>
53+
</dependency>
54+
4955
<dependency>
5056
<groupId>com.google.guava</groupId>
5157
<artifactId>guava</artifactId>

yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/dict/core/DictFrameworkUtils.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,9 @@ public static String parseDictDataValue(String dictType, String label) {
7676
return dictData!= null ? dictData.getValue(): null;
7777
}
7878

79+
@SneakyThrows
80+
public static List<String> getDictDataValueList(String dictType) {
81+
List<DictDataRespDTO> dictDatas = GET_DICT_DATA_CACHE.get(dictType);
82+
return convertList(dictDatas, DictDataRespDTO::getValue);
83+
}
7984
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package cn.iocoder.yudao.framework.dict.validation;
2+
3+
import jakarta.validation.Constraint;
4+
import jakarta.validation.Payload;
5+
6+
import java.lang.annotation.Documented;
7+
import java.lang.annotation.ElementType;
8+
import java.lang.annotation.Retention;
9+
import java.lang.annotation.RetentionPolicy;
10+
import java.lang.annotation.Target;
11+
12+
@Target({
13+
ElementType.METHOD,
14+
ElementType.FIELD,
15+
ElementType.ANNOTATION_TYPE,
16+
ElementType.CONSTRUCTOR,
17+
ElementType.PARAMETER,
18+
ElementType.TYPE_USE
19+
})
20+
@Retention(RetentionPolicy.RUNTIME)
21+
@Documented
22+
@Constraint(
23+
validatedBy = {InDictValidator.class, InDictCollectionValidator.class}
24+
)
25+
public @interface InDict {
26+
27+
/**
28+
* 数据字典type
29+
*/
30+
String type();
31+
32+
String message() default "必须在指定范围 {value}";
33+
34+
Class<?>[] groups() default {};
35+
36+
Class<? extends Payload>[] payload() default {};
37+
38+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package cn.iocoder.yudao.framework.dict.validation;
2+
3+
import cn.iocoder.yudao.framework.common.util.string.StrUtils;
4+
import cn.iocoder.yudao.framework.dict.core.DictFrameworkUtils;
5+
import jakarta.validation.ConstraintValidator;
6+
import jakarta.validation.ConstraintValidatorContext;
7+
8+
import java.util.Collection;
9+
import java.util.List;
10+
11+
public class InDictCollectionValidator implements ConstraintValidator<InDict, Collection<?>> {
12+
13+
private String dictType;
14+
15+
@Override
16+
public void initialize(InDict annotation) {
17+
this.dictType = annotation.type();
18+
}
19+
20+
@Override
21+
public boolean isValid(Collection<?> list, ConstraintValidatorContext context) {
22+
if (list == null) {
23+
return true;
24+
}
25+
List<String> dbValues = DictFrameworkUtils.getDictDataValueList(dictType);
26+
boolean match = list.stream().allMatch(v -> dbValues.stream()
27+
.anyMatch(dbValue -> dbValue.equalsIgnoreCase(v.toString())));
28+
if (match) {
29+
return true;
30+
}
31+
// 校验不通过,自定义提示语句
32+
context.disableDefaultConstraintViolation(); // 禁用默认的 message 的值
33+
context.buildConstraintViolationWithTemplate(
34+
context.getDefaultConstraintMessageTemplate().replaceAll("\\{value}",dbValues.toString())
35+
).addConstraintViolation(); // 重新添加错误提示语句
36+
return false;
37+
}
38+
39+
}
40+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package cn.iocoder.yudao.framework.dict.validation;
2+
3+
import cn.iocoder.yudao.framework.common.util.string.StrUtils;
4+
import cn.iocoder.yudao.framework.dict.core.DictFrameworkUtils;
5+
import jakarta.validation.ConstraintValidator;
6+
import jakarta.validation.ConstraintValidatorContext;
7+
8+
import java.util.List;
9+
10+
public class InDictValidator implements ConstraintValidator<InDict, Object> {
11+
12+
private String dictType;
13+
14+
@Override
15+
public void initialize(InDict annotation) {
16+
this.dictType = annotation.type();
17+
}
18+
19+
@Override
20+
public boolean isValid(Object value, ConstraintValidatorContext context) {
21+
// 为空时,默认不校验,即认为通过
22+
if (value == null) {
23+
return true;
24+
}
25+
// 校验通过
26+
final List<String> values = DictFrameworkUtils.getDictDataValueList(dictType);
27+
boolean match = values.stream().anyMatch(v -> v.equalsIgnoreCase(value.toString()));
28+
if (match) {
29+
return true;
30+
}
31+
// 校验不通过,自定义提示语句
32+
context.disableDefaultConstraintViolation(); // 禁用默认的 message 的值
33+
context.buildConstraintViolationWithTemplate(
34+
context.getDefaultConstraintMessageTemplate().replaceAll("\\{value}", values.toString())
35+
).addConstraintViolation(); // 重新添加错误提示语句
36+
return false;
37+
}
38+
39+
}
40+

yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/filter/CacheRequestBodyFilter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class CacheRequestBodyFilter extends OncePerRequestFilter {
2323
* 1. 排除 Spring Boot Admin 相关请求,避免客户端连接中断导致的异常。
2424
* 例如说:<a href="https://github.com/YunaiV/ruoyi-vue-pro/issues/795">795 ISSUE</a>
2525
*/
26-
private static final String[] IGNORE_URIS = {"/admin", "/actuator"};
26+
private static final String[] IGNORE_URIS = {"/admin/", "/actuator/"};
2727

2828
@Override
2929
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
@@ -35,7 +35,7 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
3535
protected boolean shouldNotFilter(HttpServletRequest request) {
3636
// 1. 校验是否为排除的 URL
3737
String requestURI = request.getRequestURI();
38-
if (StrUtil.containsAny(requestURI, IGNORE_URIS)) {
38+
if (StrUtil.startWithAny(requestURI, IGNORE_URIS)) {
3939
return true;
4040
}
4141

0 commit comments

Comments
 (0)