//package com.zjrs.appcomm.web;
//
//import org.mohrss.leaf.core.framework.web.controller.AjaxResponse;
//import org.mohrss.leaf.core.framework.web.exception.AppException;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.context.MessageSourceResolvable;
//import org.springframework.core.annotation.Order;
//import org.springframework.http.HttpStatus;
//import org.springframework.http.ResponseEntity;
//import org.springframework.http.converter.HttpMessageNotReadableException;
//import org.springframework.validation.BindException;
//import org.springframework.web.bind.MethodArgumentNotValidException;
//import org.springframework.web.bind.annotation.ControllerAdvice;
//import org.springframework.web.bind.annotation.ExceptionHandler;
//import org.springframework.web.bind.annotation.ResponseBody;
//
//import java.util.stream.Collectors;
//
///**
// * 湛江人社统一异常处理
// *
// * @author yuanzhen
// */
//@ControllerAdvice
//@Order(1)
//@ResponseBody
//public class ZjrsControllerAdvice {
//    private static final Logger logger = LoggerFactory.getLogger(ZjrsControllerAdvice.class);
//
//    private String defaultMessage = "系统异常";
//
//    /**
//     * 构造响应参数
//     */
//    private ResponseEntity<AjaxResponse> getResponseEntity(HttpStatus httpStatus, String message) {
//        AjaxResponse ajaxResponse = new AjaxResponse();
//        ajaxResponse.setMsg(message);
//        ajaxResponse.setAppcode("1");
//        return new ResponseEntity<AjaxResponse>(ajaxResponse, httpStatus);
//    }
//
//    @ExceptionHandler(AppException.class)
//    public ResponseEntity<AjaxResponse> processAppException(AppException e) {
//        return getResponseEntity(HttpStatus.OK, e.getMessage());
//    }
//
//    @ExceptionHandler(HttpMessageNotReadableException.class)
//    public ResponseEntity<AjaxResponse> processHttpMessageNotReadableException(HttpMessageNotReadableException e){
//        return getResponseEntity(HttpStatus.BAD_REQUEST, "格式错误");
//    }
//
//    @ExceptionHandler({MethodArgumentNotValidException.class})
//    public ResponseEntity<AjaxResponse> processMethodArgumentNotValidException(MethodArgumentNotValidException e) {
//        return getResponseEntity(HttpStatus.BAD_REQUEST, e.getBindingResult().getAllErrors().stream().map(MessageSourceResolvable::getDefaultMessage)
//                .collect(Collectors.joining("，")));
//    }
//
//    @ExceptionHandler({BindException.class})
//    public ResponseEntity<AjaxResponse> processBindException(BindException e) {
//        return getResponseEntity(HttpStatus.BAD_REQUEST, e.getBindingResult().getAllErrors().stream().map(MessageSourceResolvable::getDefaultMessage)
//                .collect(Collectors.joining("，")));
//    }
//
//    @ExceptionHandler({Exception.class})
//    public ResponseEntity<AjaxResponse> processException(Exception e) {
//        return processThrowable(e);
//    }
//
//    @ExceptionHandler({Error.class})
//    public ResponseEntity<AjaxResponse> processError(Error e) {
//        return processThrowable(e);
//    }
//
//    @ExceptionHandler(Throwable.class)
//    public ResponseEntity<AjaxResponse> processThrowable(Throwable e) {
//        logger.error(defaultMessage, e);
//        return getResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR, defaultMessage);
//    }
//}