SpringBoot 统一结果集处理器

2022-11-15 16:51:40 浏览数 (1)

SpringBoot 统一结果集处理器(模板)

HttpResponseEnum

代码语言:javascript复制
public enum HttpResponseEnum {
    /**
     * 操作成功
     */
    SUCCESS(20000, "操作成功!"),
    /**
     * 没有操作权限
     */
    AUTHORIZED(40003, "没有操作权限!"),
    /**
     * 系统异常
     */
    SYSTEM_ERROR(50000, "系统异常"),
    /**
     * 操作失败
     */
    FAIL(50000, "操作失败!"),
    /**
     * 参数格式不合法
     */
    VALID_ERROR(52000,"参数格式不合法!"),
    /**
     * 用户名已经存在
     */
    USERNAME_EXIST(52001, "用户名已经存在!");

    private final Integer code;
    private final String message;

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

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}

第一种方式

ServerResponse

代码语言:javascript复制
@Data
@Builder
@ApiModel("统一结果集处理类")
@AllArgsConstructor
@NoArgsConstructor
public class ServerResponse {

    @ApiModelProperty(value = "状态码")
    private Integer code;

    @ApiModelProperty(value = "状态")
    private Boolean status;

    @ApiModelProperty(value = "返回消息")
    private String message;

    @ApiModelProperty(value = "数据")
    private Map<String, Object> data;

    /**
     * 访问成功
     *
     * @return ServerResponse
     */
    public static ServerResponse success() {
        return ServerResponse.builder()
                .status(true)
                .code(HttpResponseEnum.SUCCESS.getCode())
                .message(HttpResponseEnum.SUCCESS.getMessage())
                .data(new HashMap<>())
                .build();
    }

    /**
     * 访问失败
     *
     * @return ServerResponse
     */
    public static ServerResponse error() {
        return ServerResponse.builder()
                .status(false)
                .code(HttpResponseEnum.FAIL.getCode())
                .message(HttpResponseEnum.FAIL.getMessage())
                .data(new HashMap<>())
                .build();
    }

    /**
     * 设置消息信息
     *
     * @param message 消息
     * @return ServerResponse
     */
    public ServerResponse message(String message) {
        this.message = message;
        return this;
    }

    /**
     * 设置 状态码 和 信息 (一)
     *
     * @param code    状态码
     * @param message 信息
     * @return ServerResponse
     */
    public ServerResponse codeAndMessage(Integer code, String message) {
        this.code = code;
        this.message = message;
        return this;
    }


    /**
     * 设置 状态码 和 信息 (一)
     *
     * @param httpResponseEnum 枚举信息
     * @return ServerResponse
     */
    public ServerResponse codeAndMessage(HttpResponseEnum httpResponseEnum) {
        this.code = httpResponseEnum.getCode();
        this.message = httpResponseEnum.getMessage();
        return this;
    }

    /**
     * 设置 数据 (一)
     *
     * @param key   key
     * @param value value  ==> Object
     * @return ServerResponse
     */
    public ServerResponse data(String key, Object value) {
        this.data.put(key, value);
        return this;
    }

    /**
     * 设置 数据 (二)
     *
     * @param data Map 集合
     * @return ServerResponse
     */
    public ServerResponse data(Map<String, Object> data) {
        this.data = data;
        return this;
    }
}

第二种方式

ResponseResult

代码语言:javascript复制
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("统一结果集处理器")
public class ResponseResult<T> {

    /**
     * 状态码
     */
    @ApiModelProperty(value = "状态码")
    private Integer code;

    /**
     * 状态信息
     */
    @ApiModelProperty(value = "状态信息")
    private Boolean status;

    /**
     * 返回信息
     */
    @ApiModelProperty(value = "返回信息")
    private String message;

    /**
     * 数据
     */
    @ApiModelProperty(value = "数据")
    private T data;

    /**
     *  全参数方法
     * @param code 状态码
     * @param status 状态
     * @param message 返回信息
     * @param data 返回数据
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    private static <T> ResponseResult<T> response(Integer code, Boolean status, String message, T data) {
        ResponseResult<T> responseResult = new ResponseResult<>();
        responseResult.setCode(code);
        responseResult.setStatus(status);
        responseResult.setMessage(message);
        responseResult.setData(data);
        return responseResult;
    }

    /**
     *  全参数方法
     * @param code 状态码
     * @param status 状态
     * @param message 返回信息
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    private static <T> ResponseResult<T> response(Integer code, Boolean status, String message) {
        ResponseResult<T> responseResult = new ResponseResult<>();
        responseResult.setCode(code);
        responseResult.setStatus(status);
        responseResult.setMessage(message);
        return responseResult;
    }

    /**
     * 成功返回(无参)
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> success() {
        return response(HttpResponseEnum.SUCCESS.getCode(), true, HttpResponseEnum.SUCCESS.getMessage(), null);
    }

    /**
     * 成功返回(枚举参数)
     * @param httpResponseEnum 枚举参数
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> success(HttpResponseEnum httpResponseEnum) {
        return response(httpResponseEnum.getCode(), true, httpResponseEnum.getMessage());
    }

    /**
     * 成功返回(状态码 返回信息)
     * @param code 状态码
     * @param message 返回信息
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> success(Integer code, String message) {
        return response(code, true, message);
    }

    /**
     * 成功返回(返回信息   数据)
     * @param message 返回信息
     * @param data 数据
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> success(String message, T data) {
        return response(HttpResponseEnum.SUCCESS.getCode(), true, message, data);
    }

    /**
     * 成功返回(状态码 返回信息 数据)
     * @param code 状态码
     * @param message 返回信息
     * @param data 数据
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> success(Integer code, String message, T data) {
        return response(code, true, message, data);
    }

    /**
     * 成功返回(数据)
     * @param data 数据
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> success(T data) {
        return response(HttpResponseEnum.SUCCESS.getCode(), true, HttpResponseEnum.SUCCESS.getMessage(), data);
    }

    /**
     * 失败返回(无参)
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> fail() {
        return response(HttpResponseEnum.FAIL.getCode(), false, HttpResponseEnum.FAIL.getMessage(), null);
    }

    /**
     *  失败返回(枚举)
     * @param httpResponseEnum 枚举
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> fail(HttpResponseEnum httpResponseEnum) {
        return response(httpResponseEnum.getCode(), false, httpResponseEnum.getMessage());
    }

    /**
     *  失败返回(状态码 返回信息)
     * @param code 状态码
     * @param message 返回信息
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> fail(Integer code, String message) {
        return response(code, false, message);
    }

    /**
     *  失败返回(返回信息 数据)
     * @param message 返回信息
     * @param data 数据
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> fail(String message, T data) {
        return response(HttpResponseEnum.FAIL.getCode(), false, message, data);
    }

    /**
     *  失败返回(状态码 返回信息 数据)
     * @param code 状态码
     * @param message 返回消息
     * @param data 数据
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> fail(Integer code, String message, T data) {
        return response(code, false, message, data);
    }

    /**
     *  失败返回(数据)
     * @param data 数据
     * @param <T> 泛型
     * @return {@link ResponseResult<T>}
     */
    public static <T> ResponseResult<T> fail(T data) {
        return response(HttpResponseEnum.FAIL.getCode(), false, HttpResponseEnum.FAIL.getMessage(), data);
    }
}

0 人点赞