package com.xintong.visualinspection.controller; import java.io.FileNotFoundException; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.ibatis.exceptions.TooManyResultsException; import org.springframework.http.converter.HttpMessageNotReadableException; import org.springframework.validation.BindingResult; import org.springframework.validation.ObjectError; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import com.alibaba.fastjson.JSON; import com.xintong.system.err.BusinessException; import com.xintong.system.err.ErrorCode; /** * 文件名:TestController * 版本信息:日期:2017/3/30 Copyright 江苏省交通规划设计院 Corporation 2017 版权所有. */ @ControllerAdvice public class BaseController { /** * 返回前台结果结构体 * @return * String * @exception * @since 1.0.0 */ public String returnResult(int result_code,String result_desc, Object o){ Map result = new HashMap<>(); result.put("result_code", result_code); result.put("result_desc", result_desc); result.put("result_data", o); return JSON.toJSON(result).toString(); } /** * 返回前台结果结构体 * @return * String * @exception * @since 1.0.0 */ public String returnSuccessResult(String result_desc){ Map result = new HashMap<>(); result.put("result_code", 0); result.put("result_desc", result_desc); return JSON.toJSON(result).toString(); } /** * 返回前台结果结构体 * @return * String * @exception * @since 1.0.0 */ public String returnSuccessResult(){ Map result = new HashMap<>(); result.put("result_code", 0); result.put("result_desc", "success"); return JSON.toJSON(result).toString(); } /** * 返回前台结果结构体 * @return * String * @exception * @since 1.0.0 */ public String returnSuccessResult(Object o){ Map result = new HashMap<>(); result.put("result_code", 0); result.put("result_desc", "success"); result.put("result_data", o); return JSON.toJSON(result).toString(); } /** * 返回前台结果结构体 * @return * String * @exception * @since 1.0.0 */ public String returnSuccessResult(String result_desc, Object o){ Map result = new HashMap<>(); result.put("result_code", 0); result.put("result_desc", result_desc); result.put("result_data", o); return JSON.toJSON(result).toString(); } /** 基于@ExceptionHandler异常处理 */ @ExceptionHandler public String exp(HttpServletRequest request, Exception ex) { // 根据不同错误提示不同的错误 ErrorCode code; if(ex instanceof NullPointerException) { code = new ErrorCode(10001); } else if (ex instanceof NumberFormatException) { code = new ErrorCode(10002); } else if (ex instanceof IndexOutOfBoundsException) { code = new ErrorCode(10003); } else if (ex instanceof ArithmeticException) { code = new ErrorCode(10004); } else if (ex instanceof FileNotFoundException) { code = new ErrorCode(10005); } else if (ex instanceof IllegalArgumentException) { code = new ErrorCode(10006); } else if (ex instanceof HttpMessageNotReadableException) { code = new ErrorCode(10007); } else if (ex instanceof BusinessException) { code = ((BusinessException) ex).getErrCode(); } else if(ex.getCause() instanceof TooManyResultsException){ code = new ErrorCode(10008); } else if (ex instanceof MethodArgumentNotValidException) { BindingResult bindingResult = ((MethodArgumentNotValidException) ex).getBindingResult(); code = new ErrorCode(20001,getValidatorErrors(bindingResult)); } else{ code = new ErrorCode(11000); } return returnResult(code.getCode(),code.getDesc(),null); } public static String getValidatorErrors(BindingResult bindingResult){ StringBuffer sb = new StringBuffer(); for(ObjectError err:bindingResult.getAllErrors()){ sb.append("["+err.getDefaultMessage()+"]"); } return sb.toString(); } }