整合 fastjson
讓返回的 json 更漂亮
響應封裝
@Data
public final class BaseResponseVO<M> {
private BaseResponseVO(){}
// 返回狀態【0-成功,1-業務失敗,999-表示系統異常】
private int status;
// 返回信息
private String msg;
// 返回數據實體;
private M data;
// 圖片前綴
private String imgPre;
// 分頁使用
private Long nowPage;
private Long totalPage;
public static<M> BaseResponseVO success(){
BaseResponseVO baseResponseVO = new BaseResponseVO();
baseResponseVO.setStatus(0);
return baseResponseVO;
}
public static<M> BaseResponseVO success(String msg){
BaseResponseVO baseResponseVO = new BaseResponseVO();
baseResponseVO.setStatus(0);
baseResponseVO.setMsg(msg);
return baseResponseVO;
}
public static<M> BaseResponseVO success(M data){
BaseResponseVO baseResponseVO = new BaseResponseVO();
baseResponseVO.setStatus(0);
baseResponseVO.setData(data);
return baseResponseVO;
}
public static<M> BaseResponseVO success(long nowPage,long totalPage,M m){
BaseResponseVO responseVO = new BaseResponseVO();
responseVO.setStatus(0);
responseVO.setData(m);
responseVO.setTotalPage(totalPage);
responseVO.setNowPage(nowPage);
return responseVO;
}
public static<M> BaseResponseVO success(long nowPage,long totalPage,String imgPre,M m){
BaseResponseVO responseVO = new BaseResponseVO();
responseVO.setStatus(0);
responseVO.setData(m);
responseVO.setImgPre(imgPre);
responseVO.setTotalPage(totalPage);
responseVO.setNowPage(nowPage);
return responseVO;
}
public static<M> BaseResponseVO success(String imgPre,M m){
BaseResponseVO responseVO = new BaseResponseVO();
responseVO.setStatus(0);
responseVO.setData(m);
responseVO.setImgPre(imgPre);
return responseVO;
}
public static<M> BaseResponseVO noLogin(){
BaseResponseVO responseVO = new BaseResponseVO();
responseVO.setStatus(700);
responseVO.setMsg("用戶需要登陸");
return responseVO;
}
public static<M> BaseResponseVO serviceFailed(int status,String msg){
BaseResponseVO baseResponseVO = new BaseResponseVO();
baseResponseVO.setStatus(status);
baseResponseVO.setMsg(msg);
return baseResponseVO;
}
public static<M> BaseResponseVO serviceFailed(String msg){
BaseResponseVO baseResponseVO = new BaseResponseVO();
baseResponseVO.setStatus(1);
baseResponseVO.setMsg(msg);
return baseResponseVO;
}
public static<M> BaseResponseVO serviceFailed(String msg,M data){
BaseResponseVO baseResponseVO = new BaseResponseVO();
baseResponseVO.setStatus(1);
baseResponseVO.setMsg(msg);
baseResponseVO.setData(data);
return baseResponseVO;
}
public static<M> BaseResponseVO systemError(){
BaseResponseVO baseResponseVO = new BaseResponseVO();
baseResponseVO.setStatus(999);
baseResponseVO.setMsg("系統異常,請聯繫管理員");
return baseResponseVO;
}
}
異常封裝
Service 層
業務異常
@Data
public class CommonServiceExcetion extends Exception{
private Integer code;
private String errMsg;
public CommonServiceExcetion(int code, String errMsg){
super(errMsg);
this.code = code;
this.errMsg = errMsg;
}
}
數據異常
@Data
public class DataTranctionExcetion extends Exception{
private Integer code;
private String errMsg;
public DataTranctionExcetion(int code,String errMsg){
super(errMsg);
this.code = code;
this.errMsg = errMsg;
}
}
Controller 層
參數驗證異常
@Data
public class ParamErrorException extends Exception {
private Integer code;
private String errMsg;
public ParamErrorException(int code, String errMsg){
super(errMsg);
this.code = code;
this.errMsg = errMsg;
}
}
異常捕獲
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(CommonServiceExcetion.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public BaseResponseVO commonServiceException(CommonServiceExcetion e){
return BaseResponseVO.serviceFailed(e.getCode(),e.getErrMsg());
}
@ExceptionHandler(ParamErrorException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public BaseResponseVO paramErrorException(ParamErrorException e){
return BaseResponseVO.serviceFailed(e.getCode(),e.getErrMsg());
}
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public BaseResponseVO exception(ExceptionHandler e){
return BaseResponseVO.systemError();
}
}