天天看點

Mr. Cappuccino的第12杯咖啡——冒泡APP(更新版)之封裝統一傳回格式

冒泡APP(更新版)之封裝統一傳回格式

上篇博文介紹了bubble-common-base子產品的主要作用(封裝統一傳回格式),這篇博文主要是對于該子產品的工具類進行封裝。

子產品目錄

Mr. Cappuccino的第12杯咖啡——冒泡APP(更新版)之封裝統一傳回格式

BaseApiResponse.java

package com.bubble.base;

import lombok.Data;
import lombok.ToString;
import org.apache.commons.lang3.StringUtils;

import java.io.Serializable;

/**
 * @author honey
 * @date 2021-09-07 23:40:48
 */
@Data
@ToString
public final class BaseApiResponse<T> implements Serializable {

    private static final long serialVersionUID = 3406150521702449352L;

    private String code;
    private String msg;
    private T data;

    private BaseApiResponse() {

    }

    private BaseApiResponse(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    private BaseApiResponse(BaseResultCode baseResultCode, T data, Object... params) {
        this.code = baseResultCode.getCode();
        if (params != null && params.length > 0) {
            this.msg = String.format(baseResultCode.getMsg(), params);
        } else {
            this.msg = baseResultCode.getMsg();
        }
        this.data = data;
    }

    public boolean isSuccess() {
        return BaseResultCode.SUCCESS.getCode().equals(this.code);
    }

    public boolean isNotSuccess() {
        return !isSuccess();
    }

    public static <T> BaseApiResponse<T> success(T data) {
        return new BaseApiResponse<>(BaseResultCode.SUCCESS, data);
    }

    public static <T> BaseApiResponse<T> success() {
        return success(null);
    }

    public static <T> BaseApiResponse<T> error(BaseResultCode baseResultCode) {
        return error(baseResultCode, null);
    }

    public static <T> BaseApiResponse<T> error(BaseResultCode baseResultCode, T data) {
        return new BaseApiResponse<>(baseResultCode, data);
    }

    public static <T> BaseApiResponse<T> error(BaseResultCode baseResultCode, T data, Object... params) {
        return new BaseApiResponse<>(baseResultCode, data, params);
    }

    public static <T> BaseApiResponse<T> error(String msg) {
        BaseResultCode unknown = BaseResultCode.UNKNOWN;
        if (StringUtils.isBlank(msg)) {
            return error(unknown);
        } else {
            return new BaseApiResponse<>(unknown.getCode(), msg);
        }
    }

}

           

BaseResultCode.java

package com.bubble.base;

/**
 * @author honey
 * @date 2021-09-08 00:04:49
 */
public enum BaseResultCode {

    /**
     * 統一傳回碼
     */
    SUCCESS("00000", "成功"),
    UNKNOWN("99999", "未知異常"),
    SYSTEM_EXCEPTION("B9999", "系統異常"),
    ;

    private final String code;
    private final String msg;

    BaseResultCode(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }
}

           

這兩個類主要對統一傳回格式進行了一個封裝,之後代碼還會慢慢優化,小夥伴們如果有更好的建議可以積極留言喲,謝謝啦!

不怕在自己的夢想裡跌倒,隻怕在别人的奇迹中迷路。隻做自己夢想的主人,不做别人奇迹的聽衆。