任务管理查询修改

This commit is contained in:
2025-11-05 15:57:28 +08:00
parent 2653c5bb73
commit 7c58bb321f
7 changed files with 148 additions and 24 deletions

View File

@@ -0,0 +1,21 @@
package com.sdm.common.validator.annotation;
import com.sdm.common.validator.validator.EnumValueValidator;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = EnumValueValidator.class)
public @interface EnumValue {
String message() default "无效的枚举值";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
Class<? extends Enum<?>> enumClass();
String enumMethod() default "isValid";
}

View File

@@ -0,0 +1,34 @@
package com.sdm.common.validator.validator;
import com.sdm.common.validator.annotation.EnumValue;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;
import java.lang.reflect.Method;
public class EnumValueValidator implements ConstraintValidator<EnumValue, Object> {
private Class<? extends Enum<?>> enumClass;
private String enumMethod;
@Override
public void initialize(EnumValue constraintAnnotation) {
enumClass = constraintAnnotation.enumClass();
enumMethod = constraintAnnotation.enumMethod();
}
@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
if (value == null) {
return true;
}
try {
// 通过反射调用枚举的校验方法
Method method = enumClass.getMethod(enumMethod, value.getClass());
Boolean result = (Boolean) method.invoke(null, value);
return result != null && result;
} catch (Exception e) {
return false;
}
}
}