/**
* @ClassName ValidationUtils
* @Description 参数校验工具类
* @Author
* @Date
* @Version 1.0
*/
public class ValidationUtils {
/**
* 使用hibernate的注解来进行验证
*/
private static Validator validator = Validation
.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();
/**
* 校验指定对象参数的合法性
*
* @param obj
* @param <T>
*/
public static <T> void validate(T obj) {
Set<ConstraintViolation<T>> constraintViolations = validator.validate(obj);
if (constraintViolations.size() > 0) {
throw new ValidationParamException(ResponseCode.PARAM_ERROR.getCode(), String.format("%s", constraintViolations.iterator().next().getMessage()));
}
}
/**
* 处理参数校验错误信息
*
* @param bindingResult
* @return
*/
public static String operateBindingResult(BindingResult bindingResult) {
List<String> errorInfoList = new ArrayList<>();
List<FieldError> fieldErrorList = bindingResult.getFieldErrors();
for (FieldError error : fieldErrorList) {
errorInfoList.add(error.getDefaultMessage());
}
return JSONObject.toJSONString(errorInfoList);
}
}
/**
* @Description TODO
* @Author
* @Date
* @Version 1.0
*/
@Getter
@ToString
public enum ResponseCode {
//结果码
SUCCESS("0000", "成功"),
FAIL("4000", "失败"),
MERCHANT_NOT_LOGIN("1001", "需要登录"),
AUTH_BUYER("1002", ""),
AUTH_SELLER("1003", ""),
PARAM_ERROR("5001", "入参错误"),
OPEN_SHOP("-10201",""),
OPEN_APPLY("10201",""),
SUBMIT_FAIL("10211",""),
UNKNOWN_ERROR("9999", "服务器发生异常");
// 返回码
private String code;
// 返回信息
private String msg;
ResponseCode(String code, String msg) {
this.code = code;
this.msg = msg;
}
}
//只需要在入参时加@Validated注解,在入参对象里加注解校验,然后全局捕获异常即可,具体按照项目区分
//@RequestBody @Validated ConfirmInfoRequest confirmInfoRequest, BindingResult result