一
package com.ys.admin.util.result;
import lombok.Data;
import javax.servlet.http.HttpServletResponse;
import java.io.Serializable;
/**
* @author He Yu
* @date 2020/8/21 11:26
*/
@Data
public class R<T> implements Serializable {
// 狀態(tài)碼
private int code;
// 是否成功
private boolean success;
// 承載數(shù)據(jù)
private T data;
// 返回消息
private String msg;
private R(IResultCode resultCode) {
this(resultCode, null, resultCode.getMessage());
}
private R(IResultCode resultCode, String msg) {
this(resultCode, null, msg);
}
private R(IResultCode resultCode, T data) {
this(resultCode, data, resultCode.getMessage());
}
private R(IResultCode resultCode, T data, String msg) {
this(resultCode.getCode(), data, msg);
}
private R(int code, T data, String msg) {
this.code = code;
this.data = data;
this.msg = msg;
this.success = ResultCode.SUCCESS.code == code;
}
/**
* 返回R
*
* @param data 數(shù)據(jù)
* @param <T> T 泛型標(biāo)記
* @return R
*/
public static <T> R<T> data(T data) {
return data(data,null);
}
/**
* 返回R
*
* @param data 數(shù)據(jù)
* @param msg 消息
* @param <T> T 泛型標(biāo)記
* @return R
*/
public static <T> R<T> data(T data, String msg) {
return data(HttpServletResponse.SC_OK, data, msg);
}
/**
* 返回R
*
* @param code 狀態(tài)碼
* @param data 數(shù)據(jù)
* @param msg 消息
* @param <T> T 泛型標(biāo)記
* @return R
*/
public static <T> R<T> data(int code, T data, String msg) {
return new R<>(code, data, msg);
}
/**
* 返回R
*
* @param msg 消息
* @param <T> T 泛型標(biāo)記
* @return R
*/
public static <T> R<T> success(String msg) {
return new R<>(ResultCode.SUCCESS, msg);
}
/**
* 返回R
*
* @param resultCode 業(yè)務(wù)代碼
* @param <T> T 泛型標(biāo)記
* @return R
*/
public static <T> R<T> success(IResultCode resultCode) {
return new R<>(resultCode);
}
/**
* 返回R
*
* @param resultCode 業(yè)務(wù)代碼
* @param msg 消息
* @param <T> T 泛型標(biāo)記
* @return R
*/
public static <T> R<T> success(IResultCode resultCode, String msg) {
return new R<>(resultCode, msg);
}
/**
* 返回R
*
* @param msg 消息
* @param <T> T 泛型標(biāo)記
* @return R
*/
public static <T> R<T> fail(String msg) {
return new R<>(ResultCode.FAILURE, msg);
}
/**
* 返回R
*
* @param code 狀態(tài)碼
* @param msg 消息
* @param <T> T 泛型標(biāo)記
* @return R
*/
public static <T> R<T> fail(int code, String msg) {
return new R<>(code, null, msg);
}
/**
* 返回R
*
* @param resultCode 業(yè)務(wù)代碼
* @param <T> T 泛型標(biāo)記
* @return R
*/
public static <T> R<T> fail(IResultCode resultCode) {
return new R<>(resultCode);
}
/**
* 返回R
*
* @param resultCode 業(yè)務(wù)代碼
* @param msg 消息
* @param <T> T 泛型標(biāo)記
* @return R
*/
public static <T> R<T> fail(IResultCode resultCode, String msg) {
return new R<>(resultCode, msg);
}
}
二
package com.ys.admin.util.result;
import java.io.Serializable;
/**
* @author He Yu
* @date 2020/8/21 11:24
*/
public interface IResultCode extends Serializable {
/**
* 消息
*
* @return String
*/
String getMessage();
/**
* 狀態(tài)碼
*
* @return int
*/
int getCode();
}
三
package com.ys.admin.util.result;
import lombok.AllArgsConstructor;
import lombok.Getter;
import javax.servlet.http.HttpServletResponse;
/**
* @author He Yu
* @date 2020/8/21 11:34
*/
@Getter
@AllArgsConstructor
public enum ResultCode implements IResultCode {
/**
* 操作成功
*/
SUCCESS(HttpServletResponse.SC_OK, "操作成功"),
/**
* 業(yè)務(wù)異常
*/
FAILURE(HttpServletResponse.SC_BAD_REQUEST, "業(yè)務(wù)異常"),
/**
* 請求未授權(quán)
*/
UN_AUTHORIZED(HttpServletResponse.SC_UNAUTHORIZED, "請求未授權(quán)"),
/**
* 404 沒找到請求
*/
NOT_FOUND(HttpServletResponse.SC_NOT_FOUND, "404 沒找到請求"),
/**
* 消息不能讀取
*/
MSG_NOT_READABLE(HttpServletResponse.SC_BAD_REQUEST, "消息不能讀取"),
/**
* 不支持當(dāng)前請求方法
*/
METHOD_NOT_SUPPORTED(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "不支持當(dāng)前請求方法"),
/**
* 不支持當(dāng)前媒體類型
*/
MEDIA_TYPE_NOT_SUPPORTED(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, "不支持當(dāng)前媒體類型"),
/**
* 請求被拒絕
*/
REQ_REJECT(HttpServletResponse.SC_FORBIDDEN, "請求被拒絕"),
/**
* 服務(wù)器異常
*/
INTERNAL_SERVER_ERROR(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "服務(wù)器異常"),
/**
* 缺少必要的請求參數(shù)
*/
PARAM_MISS(HttpServletResponse.SC_BAD_REQUEST, "缺少必要的請求參數(shù)"),
/**
* 請求參數(shù)類型錯(cuò)誤
*/
PARAM_TYPE_ERROR(HttpServletResponse.SC_BAD_REQUEST, "請求參數(shù)類型錯(cuò)誤"),
/**
* 請求參數(shù)綁定錯(cuò)誤
*/
PARAM_BIND_ERROR(HttpServletResponse.SC_BAD_REQUEST, "請求參數(shù)綁定錯(cuò)誤"),
/**
* 參數(shù)校驗(yàn)失敗
*/
PARAM_VALID_ERROR(HttpServletResponse.SC_BAD_REQUEST, "參數(shù)校驗(yàn)失敗"),
;
/**
* code編碼
*/
final int code;
/**
* 中文信息描述
*/
final String message;
}