001package io.jboot.apidoc;
002
003import com.jfinal.kit.Ret;
004
005public class ApiRet<T> {
006
007    private static final String STATE_OK = "ok";
008    private static final String STATE_FAIL = "fail";
009
010    //状态,使用 string 是为了兼容 JFinal 的 Ret,目前很多前端是通过 state 来进行判断的
011    private String state;
012
013    //错误码
014    private Integer errorCode;
015
016    //对本次状态码的描述
017    private String message;
018
019    //数据
020    private T data;
021
022    public static ApiRet by(Ret ret) {
023        ApiRet apiRet = new ApiRet();
024        apiRet.state = ret.isOk() ? STATE_OK : (ret.isFail() ? STATE_FAIL : null);
025        for (Object key : ret.keySet()) {
026            if ("state".equals(key)) {
027                continue;
028            }
029            apiRet.data = ret.get(key);
030        }
031        return apiRet;
032    }
033
034    public static ApiRet ok() {
035        ApiRet apiRet = new ApiRet();
036        apiRet.state = STATE_OK;
037        return apiRet;
038    }
039
040    public static ApiRet ok(Object data) {
041        ApiRet apiRet = new ApiRet();
042        apiRet.state = STATE_OK;
043        apiRet.data = data;
044        return apiRet;
045    }
046
047    public static ApiRet fail() {
048        ApiRet apiRet = new ApiRet();
049        apiRet.state = STATE_FAIL;
050        return apiRet;
051    }
052
053
054    public static ApiRet fail(int errorCode) {
055        ApiRet apiRet = new ApiRet();
056        apiRet.state = STATE_FAIL;
057        apiRet.errorCode = errorCode;
058        return apiRet;
059    }
060
061    public static ApiRet fail(String message) {
062        ApiRet apiRet = new ApiRet();
063        apiRet.state = STATE_FAIL;
064        apiRet.message = message;
065        return apiRet;
066    }
067
068
069    public static ApiRet fail(int errorCode, String message) {
070        ApiRet apiRet = new ApiRet();
071        apiRet.state = STATE_FAIL;
072        apiRet.errorCode = errorCode;
073        apiRet.message = message;
074        return apiRet;
075    }
076
077
078    public ApiRet<T> data(T data) {
079        this.data = data;
080        return this;
081    }
082
083    public ApiRet<T> message(String message) {
084        this.message = message;
085        return this;
086    }
087
088    public ApiRet<T> code(int errorCode) {
089        this.errorCode = errorCode;
090        return this;
091    }
092
093    public ApiRet<T> state(boolean ok) {
094        this.state = ok ? STATE_OK : STATE_FAIL;
095        return this;
096    }
097
098
099    public String getState() {
100        return state;
101    }
102
103    public void setState(String state) {
104        this.state = state;
105    }
106
107    public Integer getErrorCode() {
108        return errorCode;
109    }
110
111    public void setErrorCode(Integer errorCode) {
112        this.errorCode = errorCode;
113    }
114
115    public String getMessage() {
116        return message;
117    }
118
119    public void setMessage(String message) {
120        this.message = message;
121    }
122
123    public T getData() {
124        return data;
125    }
126
127    public void setData(T data) {
128        this.data = data;
129    }
130}