import com.yssj.base.security.entity.ConstantCode;
import com.yssj.base.security.entity.ResultObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.converter.HttpMessageConversionException;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import java.util.List;
@Slf4j
@RestControllerAdvice
public class RequestValidateExceptionHandle {
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResultObject validationBodyException(MethodArgumentNotValidException exception) {
BindingResult result = exception.getBindingResult();
String message = "";
if (result.hasErrors()) {
List<ObjectError> errors = result.getAllErrors();
if (errors != null) {
errors.forEach(p -> {
FieldError fieldError = (FieldError) p;
log.error("Data check failure : object{" + fieldError.getObjectName() + "},field{" + fieldError.getField() +
"},errorMessage{" + fieldError.getDefaultMessage() + "}");
});
if (errors.size() > 0) {
FieldError fieldError = (FieldError) errors.get(0);
message = fieldError.getDefaultMessage();
}
}
}
return new ResultObject().unSuccess(ConstantCode.CODE_PARAM_REQUIRED,message);
}
@ExceptionHandler(HttpMessageConversionException.class)
public ResultObject parameterTypeException(HttpMessageConversionException exception) {
log.error(exception.getCause().getLocalizedMessage());
return new ResultObject().unSuccess(ConstantCode.CODE_SERVER_ERROR,"类型转换错误");
}
}