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":"服务器发生错误,请联系管理员"
}
代码
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。