Skip to content

Commit d83b7cd

Browse files
author
puhui999
committed
【代码优化】InEnum 不必须指定 int 类型,通过泛型指定
1 parent e89e3c9 commit d83b7cd

File tree

87 files changed

+366
-365
lines changed

Some content is hidden

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

87 files changed

+366
-365
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package cn.iocoder.yudao.framework.common.core;
2+
3+
/**
4+
* 可生成 T 数组的接口
5+
*
6+
* @author HUIHUI
7+
*/
8+
public interface ArrayValuable<T> {
9+
10+
/**
11+
* @return 数组
12+
*/
13+
T[] array();
14+
15+
}

Diff for: yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/core/IntArrayValuable.java

-15
This file was deleted.

Diff for: yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/CommonStatusEnum.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package cn.iocoder.yudao.framework.common.enums;
22

33
import cn.hutool.core.util.ObjUtil;
4-
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
4+
import cn.iocoder.yudao.framework.common.core.ArrayValuable;
55
import lombok.AllArgsConstructor;
66
import lombok.Getter;
77

@@ -14,12 +14,12 @@
1414
*/
1515
@Getter
1616
@AllArgsConstructor
17-
public enum CommonStatusEnum implements IntArrayValuable {
17+
public enum CommonStatusEnum implements ArrayValuable<Integer> {
1818

1919
ENABLE(0, "开启"),
2020
DISABLE(1, "关闭");
2121

22-
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(CommonStatusEnum::getStatus).toArray();
22+
public static final Integer[] ARRAYS = Arrays.stream(values()).map(CommonStatusEnum::getStatus).toArray(Integer[]::new);
2323

2424
/**
2525
* 状态值
@@ -31,7 +31,7 @@ public enum CommonStatusEnum implements IntArrayValuable {
3131
private final String name;
3232

3333
@Override
34-
public int[] array() {
34+
public Integer[] array() {
3535
return ARRAYS;
3636
}
3737

Diff for: yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/DateIntervalEnum.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package cn.iocoder.yudao.framework.common.enums;
22

33
import cn.hutool.core.util.ArrayUtil;
4-
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
4+
import cn.iocoder.yudao.framework.common.core.ArrayValuable;
55
import lombok.AllArgsConstructor;
66
import lombok.Getter;
77

@@ -14,7 +14,7 @@
1414
*/
1515
@Getter
1616
@AllArgsConstructor
17-
public enum DateIntervalEnum implements IntArrayValuable {
17+
public enum DateIntervalEnum implements ArrayValuable<Integer> {
1818

1919
DAY(1, "天"),
2020
WEEK(2, "周"),
@@ -23,7 +23,7 @@ public enum DateIntervalEnum implements IntArrayValuable {
2323
YEAR(5, "年")
2424
;
2525

26-
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(DateIntervalEnum::getInterval).toArray();
26+
public static final Integer[] ARRAYS = Arrays.stream(values()).map(DateIntervalEnum::getInterval).toArray(Integer[]::new);
2727

2828
/**
2929
* 类型
@@ -35,7 +35,7 @@ public enum DateIntervalEnum implements IntArrayValuable {
3535
private final String name;
3636

3737
@Override
38-
public int[] array() {
38+
public Integer[] array() {
3939
return ARRAYS;
4040
}
4141

Diff for: yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/TerminalEnum.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package cn.iocoder.yudao.framework.common.enums;
22

3-
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
3+
import cn.iocoder.yudao.framework.common.core.ArrayValuable;
44
import lombok.Getter;
55
import lombok.RequiredArgsConstructor;
66

@@ -13,7 +13,7 @@
1313
*/
1414
@RequiredArgsConstructor
1515
@Getter
16-
public enum TerminalEnum implements IntArrayValuable {
16+
public enum TerminalEnum implements ArrayValuable<Integer> {
1717

1818
UNKNOWN(0, "未知"), // 目的:在无法解析到 terminal 时,使用它
1919
WECHAT_MINI_PROGRAM(10, "微信小程序"),
@@ -22,7 +22,7 @@ public enum TerminalEnum implements IntArrayValuable {
2222
APP(31, "手机 App"),
2323
;
2424

25-
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(TerminalEnum::getTerminal).toArray();
25+
public static final Integer[] ARRAYS = Arrays.stream(values()).map(TerminalEnum::getTerminal).toArray(Integer[]::new);
2626

2727
/**
2828
* 终端
@@ -34,7 +34,7 @@ public enum TerminalEnum implements IntArrayValuable {
3434
private final String name;
3535

3636
@Override
37-
public int[] array() {
37+
public Integer[] array() {
3838
return ARRAYS;
3939
}
4040
}

Diff for: yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/UserTypeEnum.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package cn.iocoder.yudao.framework.common.enums;
22

33
import cn.hutool.core.util.ArrayUtil;
4-
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
4+
import cn.iocoder.yudao.framework.common.core.ArrayValuable;
55
import lombok.AllArgsConstructor;
66
import lombok.Getter;
77

@@ -12,12 +12,12 @@
1212
*/
1313
@AllArgsConstructor
1414
@Getter
15-
public enum UserTypeEnum implements IntArrayValuable {
15+
public enum UserTypeEnum implements ArrayValuable<Integer> {
1616

1717
MEMBER(1, "会员"), // 面向 c 端,普通用户
1818
ADMIN(2, "管理员"); // 面向 b 端,管理后台
1919

20-
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(UserTypeEnum::getValue).toArray();
20+
public static final Integer[] ARRAYS = Arrays.stream(values()).map(UserTypeEnum::getValue).toArray(Integer[]::new);
2121

2222
/**
2323
* 类型
@@ -33,7 +33,7 @@ public static UserTypeEnum valueOf(Integer value) {
3333
}
3434

3535
@Override
36-
public int[] array() {
36+
public Integer[] array() {
3737
return ARRAYS;
3838
}
3939
}

Diff for: yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/validation/InEnum.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package cn.iocoder.yudao.framework.common.validation;
22

3-
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
4-
3+
import cn.iocoder.yudao.framework.common.core.ArrayValuable;
54
import jakarta.validation.Constraint;
65
import jakarta.validation.Payload;
6+
77
import java.lang.annotation.*;
88

99
@Target({
@@ -22,9 +22,9 @@
2222
public @interface InEnum {
2323

2424
/**
25-
* @return 实现 EnumValuable 接口的
25+
* @return 实现 ArrayValuable 接口的类
2626
*/
27-
Class<? extends IntArrayValuable> value();
27+
Class<? extends ArrayValuable<?>> value();
2828

2929
String message() default "必须在指定范围 {value}";
3030

Diff for: yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/validation/InEnumCollectionValidator.java

+11-9
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,39 @@
11
package cn.iocoder.yudao.framework.common.validation;
22

33
import cn.hutool.core.collection.CollUtil;
4-
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
5-
4+
import cn.iocoder.yudao.framework.common.core.ArrayValuable;
65
import jakarta.validation.ConstraintValidator;
76
import jakarta.validation.ConstraintValidatorContext;
7+
88
import java.util.Arrays;
99
import java.util.Collection;
1010
import java.util.Collections;
1111
import java.util.List;
12-
import java.util.stream.Collectors;
1312

14-
public class InEnumCollectionValidator implements ConstraintValidator<InEnum, Collection<Integer>> {
13+
public class InEnumCollectionValidator implements ConstraintValidator<InEnum, Collection<?>> {
1514

16-
private List<Integer> values;
15+
private List<?> values;
1716

1817
@Override
1918
public void initialize(InEnum annotation) {
20-
IntArrayValuable[] values = annotation.value().getEnumConstants();
19+
ArrayValuable<?>[] values = annotation.value().getEnumConstants();
2120
if (values.length == 0) {
2221
this.values = Collections.emptyList();
2322
} else {
24-
this.values = Arrays.stream(values[0].array()).boxed().collect(Collectors.toList());
23+
this.values = Arrays.asList(values[0].array());
2524
}
2625
}
2726

2827
@Override
29-
public boolean isValid(Collection<Integer> list, ConstraintValidatorContext context) {
28+
public boolean isValid(Collection<?> list, ConstraintValidatorContext context) {
29+
if (list == null) {
30+
return true;
31+
}
3032
// 校验通过
3133
if (CollUtil.containsAll(values, list)) {
3234
return true;
3335
}
34-
// 校验不通过,自定义提示语句(因为,注解上的 value 是枚举类,无法获得枚举类的实际值)
36+
// 校验不通过,自定义提示语句
3537
context.disableDefaultConstraintViolation(); // 禁用默认的 message 的值
3638
context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()
3739
.replaceAll("\\{value}", CollUtil.join(list, ","))).addConstraintViolation(); // 重新添加错误提示语句

Diff for: yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/validation/InEnumValidator.java

+8-9
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,29 @@
11
package cn.iocoder.yudao.framework.common.validation;
22

3-
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
4-
3+
import cn.iocoder.yudao.framework.common.core.ArrayValuable;
54
import jakarta.validation.ConstraintValidator;
65
import jakarta.validation.ConstraintValidatorContext;
6+
77
import java.util.Arrays;
88
import java.util.Collections;
99
import java.util.List;
10-
import java.util.stream.Collectors;
1110

12-
public class InEnumValidator implements ConstraintValidator<InEnum, Integer> {
11+
public class InEnumValidator implements ConstraintValidator<InEnum, Object> {
1312

14-
private List<Integer> values;
13+
private List<?> values;
1514

1615
@Override
1716
public void initialize(InEnum annotation) {
18-
IntArrayValuable[] values = annotation.value().getEnumConstants();
17+
ArrayValuable<?>[] values = annotation.value().getEnumConstants();
1918
if (values.length == 0) {
2019
this.values = Collections.emptyList();
2120
} else {
22-
this.values = Arrays.stream(values[0].array()).boxed().collect(Collectors.toList());
21+
this.values = Arrays.asList(values[0].array());
2322
}
2423
}
2524

2625
@Override
27-
public boolean isValid(Integer value, ConstraintValidatorContext context) {
26+
public boolean isValid(Object value, ConstraintValidatorContext context) {
2827
// 为空时,默认不校验,即认为通过
2928
if (value == null) {
3029
return true;
@@ -33,7 +32,7 @@ public boolean isValid(Integer value, ConstraintValidatorContext context) {
3332
if (values.contains(value)) {
3433
return true;
3534
}
36-
// 校验不通过,自定义提示语句(因为,注解上的 value 是枚举类,无法获得枚举类的实际值)
35+
// 校验不通过,自定义提示语句
3736
context.disableDefaultConstraintViolation(); // 禁用默认的 message 的值
3837
context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()
3938
.replaceAll("\\{value}", values.toString())).addConstraintViolation(); // 重新添加错误提示语句

Diff for: yudao-framework/yudao-spring-boot-starter-biz-ip/src/main/java/cn/iocoder/yudao/framework/ip/core/enums/AreaTypeEnum.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package cn.iocoder.yudao.framework.ip.core.enums;
22

3-
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
3+
import cn.iocoder.yudao.framework.common.core.ArrayValuable;
44
import lombok.AllArgsConstructor;
55
import lombok.Getter;
66

@@ -13,15 +13,15 @@
1313
*/
1414
@AllArgsConstructor
1515
@Getter
16-
public enum AreaTypeEnum implements IntArrayValuable {
16+
public enum AreaTypeEnum implements ArrayValuable<Integer> {
1717

1818
COUNTRY(1, "国家"),
1919
PROVINCE(2, "省份"),
2020
CITY(3, "城市"),
2121
DISTRICT(4, "地区"), // 县、镇、区等
2222
;
2323

24-
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(AreaTypeEnum::getType).toArray();
24+
public static final Integer[] ARRAYS = Arrays.stream(values()).map(AreaTypeEnum::getType).toArray(Integer[]::new);
2525

2626
/**
2727
* 类型
@@ -33,7 +33,7 @@ public enum AreaTypeEnum implements IntArrayValuable {
3333
private final String name;
3434

3535
@Override
36-
public int[] array() {
36+
public Integer[] array() {
3737
return ARRAYS;
3838
}
3939
}

Diff for: yudao-module-ai/yudao-module-ai-api/src/main/java/cn/iocoder/yudao/module/ai/enums/knowledge/AiKnowledgeDocumentStatusEnum.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package cn.iocoder.yudao.module.ai.enums.knowledge;
22

3-
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
3+
import cn.iocoder.yudao.framework.common.core.ArrayValuable;
44
import lombok.AllArgsConstructor;
55
import lombok.Getter;
66

@@ -13,7 +13,7 @@
1313
*/
1414
@AllArgsConstructor
1515
@Getter
16-
public enum AiKnowledgeDocumentStatusEnum implements IntArrayValuable {
16+
public enum AiKnowledgeDocumentStatusEnum implements ArrayValuable<Integer> {
1717

1818
IN_PROGRESS(10, "索引中"),
1919
SUCCESS(20, "可用"),
@@ -29,10 +29,10 @@ public enum AiKnowledgeDocumentStatusEnum implements IntArrayValuable {
2929
*/
3030
private final String name;
3131

32-
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(AiKnowledgeDocumentStatusEnum::getStatus).toArray();
32+
public static final Integer[] ARRAYS = Arrays.stream(values()).map(AiKnowledgeDocumentStatusEnum::getStatus).toArray(Integer[]::new);
3333

3434
@Override
35-
public int[] array() {
35+
public Integer[] array() {
3636
return ARRAYS;
3737
}
3838

Diff for: yudao-module-ai/yudao-module-ai-api/src/main/java/cn/iocoder/yudao/module/ai/enums/music/AiMusicGenerateModeEnum.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package cn.iocoder.yudao.module.ai.enums.music;
22

3-
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
3+
import cn.iocoder.yudao.framework.common.core.ArrayValuable;
44
import lombok.AllArgsConstructor;
55
import lombok.Getter;
66

@@ -13,7 +13,7 @@
1313
*/
1414
@AllArgsConstructor
1515
@Getter
16-
public enum AiMusicGenerateModeEnum implements IntArrayValuable {
16+
public enum AiMusicGenerateModeEnum implements ArrayValuable<Integer> {
1717

1818
DESCRIPTION(1, "描述模式"),
1919
LYRIC(2, "歌词模式");
@@ -27,10 +27,10 @@ public enum AiMusicGenerateModeEnum implements IntArrayValuable {
2727
*/
2828
private final String name;
2929

30-
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(AiMusicGenerateModeEnum::getMode).toArray();
30+
public static final Integer[] ARRAYS = Arrays.stream(values()).map(AiMusicGenerateModeEnum::getMode).toArray(Integer[]::new);
3131

3232
@Override
33-
public int[] array() {
33+
public Integer[] array() {
3434
return ARRAYS;
3535
}
3636

0 commit comments

Comments
 (0)