1.定义返回实体类
import java.io.Serializable;
public class ApiResult<T> implements Serializable {
private static final long serialVersionUID = -7202943016570124163L;
private Integer code;
private T data;
private String message;
public ApiResult() {
}
public ApiResult(Integer code) {
this(code, (T)null, (String)null);
}
public ApiResult(Integer code, T data) {
this(code, data, (String)null);
}
public ApiResult(Integer code, String message) {
this(code, (T)null, message);
}
public ApiResult(Integer code, T data, String message) {
this.code = code;
this.data = data;
this.message = message;
}
public static <T> ApiResult<T> success() {
return success((T)null, "success");
}
public static <T> ApiResult<T> success(T data) {
return success(data, "success");
}
// public static <T> ApiResult<T> success(String message) {
// return success((T)null, message);
// }
public static <T> ApiResult<T> success(T data, String message) {
return new ApiResult(ResultCodes.SUCCESS.getValue(), data, message);
}
public static <T> ApiResult<T> fail(Integer code) {
return fail(code, (T)null, "failed");
}
public static <T> ApiResult<T> fail(Integer code, T data) {
return fail(code, data, "failed");
}
public static <T> ApiResult<T> fail(Integer code, String message) {
return fail(code, (T)null, message);
}
public static <T> ApiResult<T> fail(Integer code, T data, String message) {
return new ApiResult(code, data, message);
}
public static <T> ApiResult<T> fail(ResultCodes codes) {
return fail(codes.getValue(), (T)null, codes.getDescription());
}
public Integer getCode() {
return this.code;
}
public T getData() {
return this.data;
}
public String getMessage() {
return this.message;
}
public void setCode(final Integer code) {
this.code = code;
}
public void setData(final T data) {
this.data = data;
}
public void setMessage(final String message) {
this.message = message;
}
}
2.状态码枚举类
/**
* @Description: 结果编码(默认使用 Http 协议定义的状态) 如需要自定义编码从 1XXX 开始
*/
public enum ResultCodes {
/**
* 响应成功
*/
SUCCESS(HttpStatus.OK),
/**
* 参数错误,无效请求
*/
BAD_REQUEST(HttpStatus.BAD_REQUEST),
/**
* 账号未登录或登录失效
*/
UNAUTHORIZED(HttpStatus.UNAUTHORIZED),
/**
* 账号没有权限
*/
FORBIDDEN(HttpStatus.FORBIDDEN),
/**
* 禁用请求中指定的方法
*/
METHOD_NOT_ALLOWED(HttpStatus.MULTI_STATUS),
/**
* 服务器等候请求时发生超时
*/
REQUEST_TIMEOUT(HttpStatus.REQUEST_TIMEOUT),
/**
* 服务错误
*/
SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR),
/**
* 以上是复用 http code,三位数字
*
* 以下是自定义code,四位数字
*/
FORBIDDEN_LOGIN(4001, "no authorize to access core backend"),
TOKEN_EXPIRE(4002, "token expire"),
TOKEN_NOT_VALID(4003, "token parse fail"),
TOKEN_NOT_EXIST(4004, "token not exist"),
DATA_NOT_FOUND(5001, "data not found !"),
WECHAT_API_ERROR(5002, "wechat api error . "),
NEED_CHOOSE_MODULE(5003, "you need to choose one module"),
DATA_EXITS(5004, "data already exits !"),
WECOM_SERVER_SESSION_KEY_EXPIRE(5005, "wecom server cache session key expire . "),
MINIAPP_SESSION_EXPIRE(6001, "miniapp session expire. "),
TARGET_STOCK_NOT_ENOUGH(7001,"所选门店库存不足,请重新选择"),
INSUFFICIENT_POINTS(7002,"Insufficient points."),
POINT_DEDUCTION_FAILED(7003,"Point deduction failed."),
EXCHANGE_VOUCHER_FAILED(7004,"Failed to issue exchange voucher."),
STOCK_NOT_ENOUGH(7005,"库存不足,兑换失败"),
LOW_MEMBER_LEVEL(7006,"会员等级不满足条件"),
;
private final int value;
private final String description;
ResultCodes(int value, String description) {
this.value = value;
this.description = description;
}
ResultCodes(HttpStatus httpStatus) {
this.value = httpStatus.value();
this.description = httpStatus.getReasonPhrase();
}
public int getValue() {
return value;
}
public String getDescription() {
return description;
}
}