ResultVO
统一响应枚举ResultCode
@Getter
@AllArgsConstructor
public enum ResultCode {
USERNAME_PASSWORD_ERROR(5001,"用户名密码错误"),
SUCCESS(1000, "操作成功"),
FAILED(1001, "响应失败"),
VALIDATE_FAILED(1002, "参数校验失败"),
ERROR(5000, "未知错误");
private Integer code;
private String message;
}
统一响应结果ResultVO
@Data
public class ResultVO<T> {
private static final ResultCode SUCCESS = ResultCode.SUCCESS;
private static final ResultCode FAIL = ResultCode.FAILED;
private Integer code;
private String message;
private T data;
public static <T> ResultVO<T> ok() {
return result(SUCCESS,null);
}
public static <T> ResultVO<T> ok(T data) {
return result(SUCCESS,data);
}
public static <T> ResultVO<T> ok(ResultCode resultCode) {
return result(resultCode,null);
}
public static <T> ResultVO<T> ok(ResultCode resultCode, T data) {
return result(resultCode,data);
}
public static <T> ResultVO<T> fail() {
return result(FAIL,null);
}
public static <T> ResultVO<T> fail(ResultCode resultCode) {
return result(FAIL,null);
}
public static <T> ResultVO<T> fail(T data) {
return result(FAIL,data);
}
public static <T> ResultVO<T> fail(ResultCode resultCode, T data) {
return result(resultCode,data);
}
private static <T> ResultVO<T> result(ResultCode resultCode, T data) {
ResultVO<T> resultVO = new ResultVO<>();
resultVO.setCode(resultCode.getCode());
resultVO.setMessage(resultCode.getMessage());
resultVO.setData(data);
return resultVO;
}
}
统一响应实体WrapperResponse
public class WrapperResponse<T> implements Serializable {
private static final long serialVersionUID = 5778573516446596671L;
public static int SUCCESS = 0;
public static int FAIL = -1;
public static String MSG_SUCCESS = "成功";
public static String MSG_WARNING = "成功但有告警";
public static String MSG_FAIL = "失败";
private int code = 0;
private String type;
private String message;
private T data;
public WrapperResponse() {
}
public WrapperResponse(int code, String type, String message, T data) {
this.code = code;
this.type = type;
this.message = message;
this.data = data;
}
public static <T> WrapperResponse<T> success(T data) {
return new WrapperResponse(SUCCESS, WrapperResponse.ResponseType.TYPE_SUCCESS.getType(), MSG_SUCCESS, data);
}
public static <T> WrapperResponse<T> success(String message, T data) {
message = message != null && message.length() > 0 ? message : MSG_SUCCESS;
return new WrapperResponse(SUCCESS, WrapperResponse.ResponseType.TYPE_SUCCESS.getType(), message, data);
}
public static <T> WrapperResponse<T> info(int code, String message, T data) {
message = message != null && message.length() > 0 ? message : MSG_SUCCESS;
return new WrapperResponse(code, WrapperResponse.ResponseType.TYPE_INFO.getType(), message, data);
}
public static <T> WrapperResponse<T> warning(int code, String message, T data) {
message = message != null && message.length() > 0 ? message : MSG_WARNING;
return new WrapperResponse(code, WrapperResponse.ResponseType.TYPE_WARNING.getType(), message, data);
}
public static <T> WrapperResponse<T> error(int code, String message, T data) {
message = message != null && message.length() > 0 ? message : MSG_FAIL;
return new WrapperResponse(code, WrapperResponse.ResponseType.TYPE_ERROR.getType(), message, data);
}
public static <T> WrapperResponse<T> fail(T data) {
return new WrapperResponse(FAIL, WrapperResponse.ResponseType.TYPE_ERROR.getType(), MSG_FAIL, data);
}
public static <T> WrapperResponse<T> fail(String message, T data) {
message = message != null && message.length() > 0 ? message : MSG_FAIL;
return new WrapperResponse(FAIL, WrapperResponse.ResponseType.TYPE_ERROR.getType(), message, data);
}
public int getCode() {
return this.code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return this.message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return this.data;
}
public void setData(T data) {
this.data = data;
}
public String getType() {
return this.type;
}
public void setType(String type) {
this.type = type;
}
public static enum ResponseType {
TYPE_SUCCESS("success"),
TYPE_INFO("info"),
TYPE_WARNING("warning"),
TYPE_ERROR("error");
private String type;
private ResponseType(String type) {
this.type = type;
}
public String getType() {
return this.type;
}
}
}
R类
统一响应结果R
@Getter
@Setter
@SuppressWarnings({"AlibabaClassNamingShouldBeCamel"})
@Accessors(chain = true)
public class R<T> {
public static final String DEF_ERROR_MESSAGE = "系统繁忙,请稍候再试";
public static final String HYSTRIX_ERROR_MESSAGE = "请求超时,请稍候再试";
public static final int SUCCESS_CODE = 0;
public static final int FAIL_CODE = -1;
public static final int TIMEOUT_CODE = -2;
public static final int VALID_EX_CODE = -9;
public static final int OPERATION_EX_CODE = -10;
@ApiModelProperty(value = "响应编码:0/200-请求处理成功")
private int code;
@ApiModelProperty(value = "响应数据")
private T data;
@ApiModelProperty(value = "提示消息")
private String msg = "ok";
@ApiModelProperty(value = "请求路径")
private String path;
@ApiModelProperty(value = "附加数据")
private Map<String, Object> extra;
@ApiModelProperty(value = "响应时间戳")
private long timestamp = System.currentTimeMillis();
private R() {
super();
}
public R(int code, T data, String msg) {
this.code = code;
this.data = data;
this.msg = msg;
}
public static <E> R<E> result(int code, E data, String msg) {
return new R<>(code, data, msg);
}
public static <E> R<E> success(E data) {
return new R<>(SUCCESS_CODE, data, "ok");
}
public static R<Boolean> success() {
return new R<>(SUCCESS_CODE, true, "ok");
}
public static <E> R<E> success(E data, String msg) {
return new R<>(SUCCESS_CODE, data, msg);
}
public static <E> R<E> fail(int code, String msg) {
return new R<>(code, null, (msg == null || msg.isEmpty()) ? DEF_ERROR_MESSAGE : msg);
}
public static <E> R<E> fail(String msg) {
return fail(OPERATION_EX_CODE, msg);
}
public static <E> R<E> fail(String msg, Object... args) {
String message = (msg == null || msg.isEmpty()) ? DEF_ERROR_MESSAGE : msg;
return new R<>(OPERATION_EX_CODE, null, String.format(message, args));
}
public static <E> R<E> fail(BaseExceptionCode exceptionCode) {
return validFail(exceptionCode);
}
public static <E> R<E> fail(BizException exception) {
if (exception == null) {
return fail(DEF_ERROR_MESSAGE);
}
return new R<>(exception.getCode(), null, exception.getMessage());
}
public static <E> R<E> fail(Throwable throwable) {
return fail(FAIL_CODE, throwable != null ? throwable.getMessage() : DEF_ERROR_MESSAGE);
}
public static <E> R<E> validFail(String msg) {
return new R<>(VALID_EX_CODE, null, (msg == null || msg.isEmpty()) ? DEF_ERROR_MESSAGE : msg);
}
public static <E> R<E> validFail(String msg, Object... args) {
String message = (msg == null || msg.isEmpty()) ? DEF_ERROR_MESSAGE : msg;
return new R<>(VALID_EX_CODE, null, String.format(message, args));
}
public static <E> R<E> validFail(BaseExceptionCode exceptionCode) {
return new R<>(exceptionCode.getCode(), null,
(exceptionCode.getMsg() == null || exceptionCode.getMsg().isEmpty()) ? DEF_ERROR_MESSAGE : exceptionCode.getMsg());
}
public static <E> R<E> timeout() {
return fail(TIMEOUT_CODE, HYSTRIX_ERROR_MESSAGE);
}
public R<T> put(String key, Object value) {
if (this.extra == null) {
this.extra = Maps.newHashMap();
}
this.extra.put(key, value);
return this;
}
public Boolean getIsSuccess() {
return this.code == SUCCESS_CODE || this.code == 200;
}
public Boolean getIsError() {
return !getIsSuccess();
}
@Override
public String toString() {
return JSONObject.toJSONString(this);
}
}
BaseController
public abstract class BaseController {
public <T> R<T> success(T data) {
return R.success(data);
}
public R<Boolean> success() {
return R.success();
}
public <T> R<T> fail(String msg) {
return R.fail(msg);
}
public <T> R<T> fail(String msg, Object... args) {
return R.fail(msg, args);
}
public <T> R<T> fail(int code, String msg) {
return R.fail(code, msg);
}
public <T> R<T> fail(BaseExceptionCode exceptionCode) {
return R.fail(exceptionCode);
}
public <T> R<T> fail(BizException exception) {
return R.fail(exception);
}
public <T> R<T> fail(Throwable throwable) {
return R.fail(throwable);
}
public <T> R<T> validFail(String msg) {
return R.validFail(msg);
}
public <T> R<T> validFail(String msg, Object... args) {
return R.validFail(msg, args);
}
public <T> R<T> validFail(BaseExceptionCode exceptionCode) {
return R.validFail(exceptionCode);
}
}