项目搭建之统一返回值

自定义枚举类

@Getter
public enum ReturnCodeEnum {

    /**
     * 操作失败
     **/
    RC999("999","操作XXX失败"),

    /**
     * 操作成功
     **/
    RC200("200","success"),

    /**
     * 服务降级
     **/
    RC201("201","服务开启降级保护,请稍后再试!"),

    /**
     * 热点参数限流
     **/
    RC202("202","热点参数限流,请稍后再试!"),

    /**
     * 系统规则不满足
     **/
    RC203("203","系统规则不满足要求,请稍后再试!"),

    /**
     * 授权规则不通过
     **/
    RC204("204","授权规则不通过,请稍后再试!"),

    /**
     * access_denied
     **/
    RC403("403","无访问权限,请联系管理员授予权限"),

    /**
     * access_denied
     **/
    RC401("401","匿名用户访问无权限资源时的异常"),

    RC404("404","404页面找不到的异常"),

    /**
     * 服务异常
     **/
    RC500("500","系统异常,请稍后重试"),

    RC375("375","数学运算异常,请稍后重试"),

    INVALID_TOKEN("2001","访问令牌不合法"),

    ACCESS_DENIED("2003","没有权限访问该资源"),

    CLIENT_AUTHENTICATION_FAILED("1001","客户端认证失败"),

    USERNAME_OR_PASSWORD_ERROR("1002","用户名或密码错误"),

    BUSINESS_ERROR("1004","业务逻辑异常"),

    UNSUPPORTED_GRANT_TYPE("1003","不支持的认证模式");

    /**
     * 自定义状态码
     */
    private final String code;

    /**
     * 自定义描述信息
     */
    private final String message;

    ReturnCodeEnum(String code, String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * 遍历枚举
     * @param code 状态码
     * @return ReturnCodeEnum
     */
    public static ReturnCodeEnum getReturnCodeEnum(String code) {
        for (ReturnCodeEnum element : ReturnCodeEnum.values()) {
            if (element.getCode().equalsIgnoreCase(code)) {
                return element;
            }
        }
        return null;
    }
    
    /**
     * 流式遍历枚举
     * @param code 状态码
     * @return ReturnCodeEnum
     */
    public static ReturnCodeEnum getReturnCodeEnumByStream(String code) {
        return Arrays.stream(ReturnCodeEnum.values()).filter(x -> x.getCode().equalsIgnoreCase(code)).findFirst().orElse(null);
    }
}

统一定义返回值对象

@Data
@Accessors(chain = true)
public class ResultData<T> {
    /**
     * 结果状态 ,具体状态码参见枚举类ReturnCodeEnum
     */
    private String code;

    /**
     * 描述信息
     */
    private String message;

    /**
     * 数据
     */
    private T data;

    /**
     * 当前时间
     */
    private long timestamp ;


    public ResultData (){
        this.timestamp = System.currentTimeMillis();
    }

    public static <T> ResultData<T> success(T data) {
        ResultData<T> resultData = new ResultData<>();
        resultData.setCode(ReturnCodeEnum.RC200.getCode());
        resultData.setMessage(ReturnCodeEnum.RC200.getMessage());
        resultData.setData(data);
        return resultData;
    }

    public static <T> ResultData<T> fail(String code, String message) {
        ResultData<T> resultData = new ResultData<>();
        resultData.setCode(code);
        resultData.setMessage(message);
        resultData.setData(null);
        return resultData;
    }

}

相关推荐

  1. 项目统一返回

    2024-03-28 10:42:04       42 阅读
  2. 【个人博客】(24)统一api接口返回格式

    2024-03-28 10:42:04       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-28 10:42:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-28 10:42:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-28 10:42:04       87 阅读
  4. Python语言-面向对象

    2024-03-28 10:42:04       96 阅读

热门阅读

  1. 5.88 BCC工具之tcpsynbl.py解读

    2024-03-28 10:42:04       39 阅读
  2. stm32重写printf函数串口调试---环境:stm32+hal+cubeide

    2024-03-28 10:42:04       42 阅读
  3. MySQL添加数据的方式

    2024-03-28 10:42:04       44 阅读
  4. 力扣练习 3.27

    2024-03-28 10:42:04       41 阅读
  5. python爬虫基础----字符串高级

    2024-03-28 10:42:04       38 阅读
  6. 云计算运维工程师

    2024-03-28 10:42:04       37 阅读
  7. 【uniapp】Vue3移动端滚动加载 分页组件的封装

    2024-03-28 10:42:04       40 阅读
  8. mysql_数据_增删改查

    2024-03-28 10:42:04       40 阅读