通用的統一返回結果

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

@Data
public class Result<T> {

	/**
	 * 狀態值
	 */
	private Boolean status;

	/**
	 * 狀態碼
	 */
	private String code;

	/**
	 * 狀態信息
	 */
	private String message;

	/**
	 * 返回的結果
	 */
	private T result;

	/**
	 * 構造函數
	 *
	 * @param code    狀態碼
	 * @param message 提示信息
	 */
	public Result(String code, String message) {
		this.code = code;
		this.message = message;
	}

	/**
	 * 構造函數
	 *
	 * @param status  狀態
	 * @param code    狀態碼
	 * @param message 提示信息
	 */
	public Result(Boolean status, String code, String message) {
		this.status = status;
		this.code = code;
		this.message = message;
	}

	/**
	 * 構造函數
	 *
	 * @param status  狀態
	 * @param code    狀態碼
	 * @param message 提示信息
	 * @param result  結果
	 */
	public Result(Boolean status, String code, String message, T result) {
		this.status = status;
		this.code = code;
		this.message = message;
		this.result = result;
	}

	// --------- 靜態方法 ----------

	/**
	 * 枚舉的狀態碼
	 */
	private static final String CODE;

	/**
	 * 枚舉的提示信息
	 */
	private static final String MESSAGE;

	/**
	 * 500
	 */
	private static final String ERROR_CODE;

	/**
	 * 成功返回的狀態碼
	 */
	private static final String SUCCESS_CODE;

	/**
	 * 成功返回的狀態信息
	 */
	private static final String SUCCESS_MSG;

	/**
	 * 靜態代碼塊初始化
	 */
	static {
		// 成功返回的狀態碼
		CODE = "getCode";
		// 枚舉的提示信息
		MESSAGE = "getMessage";
		// 異常碼
		ERROR_CODE = "500";
		// 成功返回的狀態碼
		SUCCESS_CODE = "200";
		// 成功返回的狀態信息
		SUCCESS_MSG = "操作成功";
	}
	
	/**
	 * 操作成功
	 *
	 * @return 返回結果
	 */
	public static Result success() {
		return new Result(true, SUCCESS_CODE, SUCCESS_MSG);
	}

	/**
	 * 操作成功
	 *
	 * @return 返回結果
	 */
	public static <T> Result success(T result) {
		return new Result(true, SUCCESS_CODE, SUCCESS_MSG, result);
	}

	/**
	 * 返回異常的
	 *
	 * @param t   泛型枚舉
	 * @param <T> 泛型
	 * @return 返回 result
	 */
	public static <T extends Enum> Result error(T t) {
		return error(t, CODE, MESSAGE, null);
	}

	/**
	 * 返回異常的
	 *
	 * @param t       泛型枚舉
	 * @param message 提示信息
	 * @param <T>     泛型
	 * @return 返回 result
	 */
	public static <T extends Enum> Result error(T t, String message) {
		return error(t, CODE, MESSAGE, message);
	}

	/**
	 * 返回異常的
	 *
	 * @param t          返回的枚舉
	 * @param codeMethod 狀態的方法
	 * @param msgMethod  提示信息的狀態碼
	 * @param <T>        泛型
	 * @return 返回 result 對象
	 */
	public static <T extends Enum> Result error(T t, String codeMethod, String msgMethod, String message) {
		try {
			Class<?> aClass = t.getClass();
			String code = aClass.getMethod(codeMethod).invoke(t).toString();
			message = StringUtils.isEmpty(message) ? aClass.getMethod(msgMethod).invoke(t).toString() : message;
			return new Result(code, message);
		} catch (Exception e) {
			return new Result(ERROR_CODE, e.getMessage());
		}
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章