一. 结构
结构设计为3个Java类:
 一个为返回状态码的常量类(ECode),一个为公共返回类(BaseResult),一个为返回状态码的枚举类(ResultCode)
二. 具体代码
(1)返回状态码的常量类(ECode)
package com.blog.base.global;
/**
 * 返回状态码
 *
 * @author admin
 * @create 2022/1/10
 */
public class ECode {
    /**
     * 操作成功
     */
    public static final Integer OK = 200;
    /**
     * 操作失败
     */
    public static final Integer FAIL = 500;
    /**
     * 未知错误
     */
    public static final Integer ERROR = 502;
    /**
     * 未通过token验证
     */
    public static final Integer UNAUTHORIZED = 401;
    /**
     * 无操作权限
     */
    public static final Integer NO_OPERATION_AUTHORITY = 402;
    /**
     * 服务器出现异常
     */
    public static final Integer SERVER_ERROR = 500;
    /**
     * 请求次数过于频繁
     */
    public static final Integer REQUEST_OVER_LIMIT = 502;
    
}
(2)公共返回类(BaseResult)
package com.blog.base.result;
import com.blog.base.global.ECode;
/**
 * 公共返回类
 *
 * @author admin
 * @create 2022/1/8
 */
public class BaseResult<T> {
    /**
     * 状态码
     */
    private Integer code;
    /**
     * 信息
     */
    private String message;
    /**
     * 数据
     */
    private T data;
    public Integer getCode() {
        return code;
    }
    public void setCode(Integer code) {
        this.code = code;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public T getData() {
        return data;
    }
    public void setData(T data) {
        this.data = data;
    }
    public BaseResult() {
    }
    public BaseResult(Integer code, String message, T data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }
    public BaseResult(Integer code, String message) {
        this.code = code;
        this.message = message;
    }
    public BaseResult(ResultCode resultCode, T data) {
        this.code = resultCode.getCode();
        this.message = resultCode.getMsg();
        this.data = data;
    }
    /**
     * 返回成功
     * @param message 信息
     * @return 公共返回类
     */
    public static <T> BaseResult<T> ok(String message){
        return new BaseResult<>(ECode.OK, message);
    }
    /**
     * 返回成功
     * @param <T> 数据
     * @return 公共返回类
     */
    public static <T> BaseResult<T> ok(T data){
        return new BaseResult<>(ResultCode.OK, data);
    }
    /**
     * 返回成功
     * @param message 信息
     * @param <T> 数据
     * @return 公共返回类
     */
    public static <T> BaseResult<T> ok(String message, T data){
        return new BaseResult<>(ECode.OK, message, data);
    }
    /**
     * 返回失败
     * @param message 信息
     * @return 公共返回类
     */
    public static <T> BaseResult<T> fail(String message){
        return new BaseResult<>(ECode.FAIL, message);
    }
    /**
     * 返回失败
     * @param <T> 数据
     * @return 公共返回类
     */
    public static <T> BaseResult<T> fail(T data){
        return new BaseResult<>(ResultCode.FAIL, data);
    }
    /**
     * 返回失败
     * @param message 信息
     * @param <T> 数据
     * @return 公共返回类
     */
    public static <T> BaseResult<T> fail(String message, T data){
        return new BaseResult<>(ECode.FAIL, message, data);
    }
    
}
(3)返回状态码的枚举类(ResultCode)
package com.blog.base.result;
/**
 * 响应码枚举
 *
 * @author admin
 * @create 2022/1/10
 */
public enum ResultCode {
    /**
     * 规范响应体中的响应码和响应信息
     */
    OK(200, "操作成功"),
    FAIL(500, "操作失败"),
    ERROR(502, "未知错误");
    private Integer code;
    private String msg;
    public Integer getCode() {
        return code;
    }
    public void setCode(Integer code) {
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    ResultCode(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }
    
}










