package com.nanometer.smartlab.api; import com.alibaba.fastjson.JSON; import com.nanometer.smartlab.exception.BusinessException; import com.nanometer.smartlab.exception.ExceptionEnumCode; import com.nanometer.smartlab.model.ResponseModel; import com.nanometer.smartlab.util.Constants; import com.nanometer.smartlab.util.MessageUtil; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.ExceptionHandler; import javax.servlet.http.HttpServletRequest; import java.io.Serializable; /** * Created by johnny on 16/7/20. */ public abstract class BaseAction implements Serializable { private final static Logger logger = LoggerFactory.getLogger(BaseAction.class); /** 基于@ExceptionHandler异常处理 */ @ExceptionHandler public Object exp(HttpServletRequest request, Exception e) { if(e instanceof IllegalArgumentException){ logger.error("error occured.", e); return ResponseModel.getParamInstence(e.getMessage()); }else if (e instanceof RuntimeException){ logger.error("error occured.", e); return ResponseModel.getErrInstance(); }else if (e instanceof Throwable) { logger.error("error occured.", e); return ResponseModel.getErrInstance(); } else { logger.error("error occured.", e); return ResponseModel.getErrInstance(); } } public String getResponseString(ResponseModel responseModel) { if (responseModel == null) { responseModel = new ResponseModel(); responseModel.setCode(ExceptionEnumCode.OK.getCode()); responseModel.setMessage(MessageUtil.getMessageByCode(responseModel.getCode())); } return JSON.toJSONString(responseModel); } public String getResponseString(String code, String errMessage) { ResponseModel responseModel = new ResponseModel(); responseModel.setCode(code); responseModel.setMessage(errMessage); return this.getResponseString(responseModel); } public String getResponseString(String code) { String errMessage = MessageUtil.getMessageByCode(code); return this.getResponseString(code, errMessage); } public String getOkResponseString() { return this.getResponseString(ExceptionEnumCode.OK.getCode()); } public String getSysErrResponseString() { return this.getResponseString(ExceptionEnumCode.SYS_ERR.getCode()); } private String getHeader(HttpServletRequest request, String key) { if (request == null || StringUtils.isBlank(key)) { return null; } return request.getHeader(key); } public String getIdCardFromHeader(HttpServletRequest request) { return this.getHeader(request, Constants.HEADER_KEY_ID_CARD); } }