public class Result {
/**
* 状态响应码
*/
private int code;
/**
* 响应结果 成功 / 失败
*/
private boolean success;
/**
* 响应信息
*/
private String message;
/**
* 响应数据
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
private Object data;
/**
* 数据总数
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
private Long totalCount;
public Result setCode(ResultCode resultCode) {this.code = resultCode.code();
return this;
}
public int getCode() {return code;}
public boolean isSuccess() {return success;}
public Result setSuccess(boolean success) {
this.success = success;
return this;
}
public String getMessage() {return message;}
public Result setMessage(String message) {
this.message = message;
return this;
}
public Object getData() {return data;}
public Result setData(Object data) {
this.data = data;
return this;
}
public Long getTotalCount() { return totalCount;}
public Result setTotalCount(Long totalCount) {
this.totalCount = totalCount;
return this;
}
}
public enum ResultCode {SUCCESS(200),// 成功
FAIL(400),// 失败
UNAUTHORIZED(401),// 未认证(签名错误)未登录
NOT_FOUND(404),// 接口不存在
INTERNAL_SERVER_ERROR(500);// 服务器内部错误
private final int code;
ResultCode(int code) {this.code = code;}
public int code() {return code;}
}
@Slf4j
public class ReturnUtils {
private static final String DEFAULT_SUCCESS_MESSAGE = "SUCCESS";
public static Result success() {return new Result().setCode(ResultCode.SUCCESS)
.setSuccess(true)
.setMessage(DEFAULT_SUCCESS_MESSAGE);
}
public static Result success(String msg) {return new Result().setCode(ResultCode.SUCCESS)
.setSuccess(true)
.setMessage(msg);
}
public static Result success(String msg, Object data, long totalCount) {return new Result().setCode(ResultCode.SUCCESS)
.setMessage(msg)
.setData(data)
.setSuccess(true)
.setTotalCount(totalCount);
}
public static Result fail(String msg) {log.error(msg);
return new Result().setCode(ResultCode.FAIL)
.setSuccess(false)
.setMessage(msg);
}
public static Result fail(ResultCode code, String msg) {log.error(msg);
return new Result().setCode(code)
.setSuccess(false)
.setMessage(msg);
}
}
@Slf4j
@RestControllerAdvice
public class ExceptionAdvice {@ExceptionHandler(Exception.class)
public Result exceptionHandler(HttpServletResponse resp, Exception e) {log.error(e.getMessage());
return ReturnUtils.fail(ResultCode.INTERNAL_SERVER_ERROR, e.getMessage());
}
}
@RequestMapping("test-exception")
public void testException() {
try {int i = 1 / 0;} catch (Exception e) {throw new RuntimeException("服务器发生错误,请联系管理员");
}
}
{
"code":500,
"success":false,
"message":"服务器发生错误,请联系管理员"
}