public enum FieldValueMappingEnum {
/**
* 可选值0/1
*/
KEY_1(new String[]{"flightStartDate", "flightEndDate","trainStartDate","carStartDate","carEndDate","remarks",
"airportTransferStartDate","airportTransferEndDate","trainTransferStartDate","trainTransferEndDate",
"flightIntlStartDate","flightIntlEndDate"}, new Integer[]{0, 1}),
/**
* 可选值0/2
*/
KEY_2(new String[]{"carCount"}, new Integer[]{0, 2}),
/**
* 可选值0/1/2
*/
KEY_3(new String[]{"flightStartCity", "flightEndCity","trainStartCity","trainEndCity","carStartCity","hotelCheckInCity",
"hotelDate","airportTransferStartCity","trainTransferStartCity","flightIntlStartCity","flightIntlEndCity","hotelIntlCheckInCity",
"hotelIntlDate","hotelAveragePrice","hotelIntlAveragePrice","hotelProductType","hotelIntlProductType","trainProductType",
"carProductType","airportTransferProductType","trainTransferProductType"},
new Integer[]{0,1,2});
private String[] fields;
private Integer[] values;
FieldValueMappingEnum(String[] fields, Integer[] values) {
this.fields = fields;
this.values = values;
}
public String[] getFields() {
return fields;
}
public Integer[] getValues() {
return values;
}
}
public class SyncTemplateValidationUtils {
/**
* 验证AoApplyTripTempVo对象的字段值是否合法
*
* @param vo 待验证的AoApplyTripTempVo对象
* @param errorMessages 存储验证不通过的错误信息的列表
* @return void
*/
public static void validateFields(AoApplyTripTempVo vo, List<String> errorMessages) {
for (FieldValueMappingEnum mapping : FieldValueMappingEnum.values()) {
Set<Integer> allowedValues = new HashSet<>(Arrays.asList(mapping.getValues()));
for (String fieldName : mapping.getFields()) {
try {
Field field = AoApplyTripTempVo.class.getDeclaredField(fieldName);
field.setAccessible(true);
Integer fieldValue = (Integer) field.get(vo);
if (fieldValue != null && !allowedValues.contains(fieldValue)) {
errorMessages.add("Field " + fieldName + " allowed values: " + allowedValues);
}
} catch (NoSuchFieldException | IllegalAccessException e) {
log.error("validateFields error:",e);
throw new CorpBusinessException(ApplyTripResponseCodeEnum.PARAMETER_CHECK_ERROR);
}
}
}
}
}
校验结果: