Commit 32582570 by s_guodong

优化自定义vo赋值 和 校验

parent 18b36fb0
...@@ -69,12 +69,17 @@ public class ReflectUtil { ...@@ -69,12 +69,17 @@ public class ReflectUtil {
declaredField.set(baseVo, o); declaredField.set(baseVo, o);
} else { } else {
// 对象类型 // 对象类型
Object typeO = type.newInstance(); if (type == f.getType()) {
String s = setValue2RequestVo(o, f.getType(), typeO, type); // 相同的class 直接赋值
if (!StringUtils.isBlank(s)) { declaredField.set(baseVo, o);
return s; } else {
Object typeO = type.newInstance();
String s = setValue2RequestVo(o, f.getType(), typeO, type);
if (!StringUtils.isBlank(s)) {
return s;
}
declaredField.set(baseVo, typeO);
} }
declaredField.set(baseVo, typeO);
} }
} catch (Exception e) { } catch (Exception e) {
// Class<?> superclass = baseVoClass.getSuperclass(); // Class<?> superclass = baseVoClass.getSuperclass();
......
...@@ -31,6 +31,9 @@ public class ValidatorUtil { ...@@ -31,6 +31,9 @@ public class ValidatorUtil {
CHECK_ERR_MSG.remove(); CHECK_ERR_MSG.remove();
return "参数校验错误[" + s + "]"; return "参数校验错误[" + s + "]";
} }
if (obj == null) {
return "";
}
Class<?> aClass = obj.getClass(); Class<?> aClass = obj.getClass();
Field[] fields = aClass.getDeclaredFields(); Field[] fields = aClass.getDeclaredFields();
for (Field f : fields) { for (Field f : fields) {
...@@ -41,133 +44,165 @@ public class ValidatorUtil { ...@@ -41,133 +44,165 @@ public class ValidatorUtil {
o = f.get(obj); o = f.get(obj);
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
} }
if (f.isAnnotationPresent(Length.class)) { // 集合
Length length = f.getAnnotation(Length.class); if (type.isAssignableFrom(List.class)) {
int max = length.max(); List list = (List) o;
String message = length.message(); for (int i = 0; i < list.size(); i++) {
if (o != null) { Object e = list.get(i);
if (type.isAssignableFrom(String.class)) { String check = check(e);
int min = length.min(); if (StringUtils.isNotBlank(check)) {
String stringValue = (String) o; return check;
if (stringValue.length() > max || stringValue.length() < min) { }
return "参数校验错误[" + message + "]"; }
} } else if (isPrimate(type)) {
} else if (type.isAssignableFrom(BigDecimal.class)) { // 基本数据类型
String bigDecimal = ((BigDecimal) o).toPlainString(); if (f.isAnnotationPresent(Length.class)) {
if (bigDecimal.length() > max) { Length length = f.getAnnotation(Length.class);
return "参数校验错误[" + message + "]"; int max = length.max();
} String message = length.message();
if (f.isAnnotationPresent(DecimalLength.class)) { if (o != null) {
DecimalLength annotation = f.getAnnotation(DecimalLength.class); if (type.isAssignableFrom(String.class)) {
int i = bigDecimal.indexOf("."); int min = length.min();
if (i > -1) { String stringValue = (String) o;
String substring = bigDecimal.substring(i + 1); if (stringValue.length() > max || stringValue.length() < min) {
if (substring.length() > annotation.value()) { return "参数校验错误[" + message + "]";
return "参数校验错误[" + annotation.message() + "]"; }
} } else if (type.isAssignableFrom(BigDecimal.class)) {
String integerString = bigDecimal.substring(0, i); String bigDecimal = ((BigDecimal) o).toPlainString();
if (integerString.length() > annotation.zsvalue() && annotation.zsvalue() > 0) { if (bigDecimal.length() > max) {
return "参数校验错误[" + annotation.zsmessage() + "]"; return "参数校验错误[" + message + "]";
} }
} else { if (f.isAnnotationPresent(DecimalLength.class)) {
if (annotation.zsvalue() > 0 && bigDecimal.length() > annotation.zsvalue()) { DecimalLength annotation = f.getAnnotation(DecimalLength.class);
return "参数校验错误[" + annotation.zsmessage() + "]"; int i = bigDecimal.indexOf(".");
if (i > -1) {
String substring = bigDecimal.substring(i + 1);
if (substring.length() > annotation.value()) {
return "参数校验错误[" + annotation.message() + "]";
}
String integerString = bigDecimal.substring(0, i);
if (integerString.length() > annotation.zsvalue() && annotation.zsvalue() > 0) {
return "参数校验错误[" + annotation.zsmessage() + "]";
}
} else {
if (annotation.zsvalue() > 0 && bigDecimal.length() > annotation.zsvalue()) {
return "参数校验错误[" + annotation.zsmessage() + "]";
}
} }
} }
}
} else if (type.isAssignableFrom(Integer.TYPE) || type.isAssignableFrom(Integer.class)) { } else if (type.isAssignableFrom(Integer.TYPE) || type.isAssignableFrom(Integer.class)) {
int min = length.min(); int min = length.min();
String stringValue = String.valueOf(o); String stringValue = String.valueOf(o);
if (stringValue.length() > max || stringValue.length() < min) { if (stringValue.length() > max || stringValue.length() < min) {
return "参数校验错误[" + message + "]"; return "参数校验错误[" + message + "]";
}
} }
} }
}
}
if (f.isAnnotationPresent(NotEmpty.class) && type.isAssignableFrom(String.class)) {
NotEmpty annotation = f.getAnnotation(NotEmpty.class);
if (o == null || StringUtils.isBlank((String) o)) {
return "参数校验错误[" + annotation.message() + "]";
} }
} if (f.isAnnotationPresent(NotEmpty.class) && type.isAssignableFrom(String.class)) {
if (f.isAnnotationPresent(NotNull.class) && !type.isAssignableFrom(String.class)) { NotEmpty annotation = f.getAnnotation(NotEmpty.class);
NotNull annotation = f.getAnnotation(NotNull.class); if (o == null || StringUtils.isBlank((String) o)) {
if (o == null) { return "参数校验错误[" + annotation.message() + "]";
return "参数校验错误[" + annotation.message() + "]";
}
}
if (f.isAnnotationPresent(Need.class)) {
Need annotation = f.getAnnotation(Need.class);
String flg = annotation.flg();
// 拦截0, 0.00的情况
if ("1".equals(flg)) {
if (type.isAssignableFrom(BigDecimal.class) && o != null) {
BigDecimal bigDecimal = (BigDecimal) o;
if (bigDecimal.compareTo(BigDecimal.ZERO) == 0) {
return "参数校验错误[" + annotation.message() + "]";
}
} }
} }
if (o == null) { if (f.isAnnotationPresent(NotNull.class) && !type.isAssignableFrom(String.class)) {
return "参数校验错误[" + annotation.message() + "]"; NotNull annotation = f.getAnnotation(NotNull.class);
} if (o == null) {
if (type.isAssignableFrom(String.class) && StringUtils.isBlank((String) o)) {
return "参数校验错误[" + annotation.message() + "]";
}
if (ReflectUtil.isPrimate(type)) {
} else if ("java.util.List".equals(type.getName())) {
List list = (List) o;
if (list.size() == 0) {
return "参数校验错误[" + annotation.message() + "]"; return "参数校验错误[" + annotation.message() + "]";
} }
// 获取list的泛型 }
Class tType = ReflectUtil.getTType(f); if (f.isAnnotationPresent(Need.class)) {
if (!ReflectUtil.isPrimate(tType)) { Need annotation = f.getAnnotation(Need.class);
for (Object data : list) { String flg = annotation.flg();
String s = check(data); // 拦截0, 0.00的情况
if (!StringUtils.isBlank(s)) { if ("1".equals(flg)) {
return s; if (type.isAssignableFrom(BigDecimal.class) && o != null) {
BigDecimal bigDecimal = (BigDecimal) o;
if (bigDecimal.compareTo(BigDecimal.ZERO) == 0) {
return "参数校验错误[" + annotation.message() + "]";
} }
} }
} }
} else { if (o == null) {
String s = check(o); return "参数校验错误[" + annotation.message() + "]";
if (!StringUtils.isBlank(s)) { }
return s; if (type.isAssignableFrom(String.class) && StringUtils.isBlank((String) o)) {
return "参数校验错误[" + annotation.message() + "]";
}
if (ReflectUtil.isPrimate(type)) {
} else if ("java.util.List".equals(type.getName())) {
List list = (List) o;
if (list.size() == 0) {
return "参数校验错误[" + annotation.message() + "]";
}
// 获取list的泛型
Class tType = ReflectUtil.getTType(f);
if (!ReflectUtil.isPrimate(tType)) {
for (Object data : list) {
String s = check(data);
if (!StringUtils.isBlank(s)) {
return s;
}
}
}
} else {
String s = check(o);
if (!StringUtils.isBlank(s)) {
return s;
}
} }
} }
} if (f.isAnnotationPresent(ListValue.class) && o != null && StringUtils.isNotBlank((String.valueOf(o)).trim())) {
if (f.isAnnotationPresent(ListValue.class) && o != null && StringUtils.isNotBlank((String.valueOf(o)).trim())) { ListValue annotation = f.getAnnotation(ListValue.class);
ListValue annotation = f.getAnnotation(ListValue.class); int index = -1;
int index = -1; if (type.isAssignableFrom(String.class)) {
if (type.isAssignableFrom(String.class)) { String[] valueList = annotation.strValue();
String[] valueList = annotation.strValue(); Arrays.sort(valueList);
Arrays.sort(valueList); index = Arrays.binarySearch(valueList, o);
index = Arrays.binarySearch(valueList, o); } else if (type.isAssignableFrom(Integer.TYPE) || type.isAssignableFrom(Integer.class)) {
} else if (type.isAssignableFrom(Integer.TYPE) || type.isAssignableFrom(Integer.class)) { Integer v = (Integer) o;
Integer v = (Integer) o; int[] valueList = annotation.value();
int[] valueList = annotation.value(); Arrays.sort(valueList);
Arrays.sort(valueList); index = Arrays.binarySearch(valueList, v);
index = Arrays.binarySearch(valueList, v); }
if (index < 0) {
return "参数校验错误[" + annotation.message() + "]";
}
} }
if (index < 0) { if (f.isAnnotationPresent(JsonFormat.class) && o != null) {
return "参数校验错误[" + annotation.message() + "]"; Date date = (Date) o;
JsonFormat annotation = f.getAnnotation(JsonFormat.class);
String format = DateUtils.format(date, annotation.pattern());
if (annotation.pattern().length() != format.length()) {
return "参数校验错误[时间格式不正确]";
}
} }
} } else if (type.getName().contains("com")) {
if (f.isAnnotationPresent(JsonFormat.class) && o != null) { // 对象类型
Date date = (Date) o; String check = check(o);
JsonFormat annotation = f.getAnnotation(JsonFormat.class); if (StringUtils.isNotBlank(check)) {
String format = DateUtils.format(date, annotation.pattern()); return check;
if (annotation.pattern().length() != format.length()) {
return "参数校验错误[时间格式不正确]";
} }
} }
} }
return ""; return "";
} }
private static boolean isPrimate(Class aclass) {
return aclass == String.class
|| aclass == BigDecimal.class
|| aclass == Date.class
|| aclass == Integer.TYPE
|| aclass == Double.TYPE
|| aclass == Float.TYPE
|| aclass == Long.TYPE
|| aclass.isPrimitive();
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment