package com.xxx.bean;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/**
* json返回响应结果集
*
* @author Zsj
* @date 2021/2/26
* @version 1.0.0
*/
public class Result<T> implements Serializable {
/**
* 是否成功
* 成功:true
* 失败:false
*/
private boolean success;
/**
* 响应码
* 成功:1
* 失败:0或其他自定义编码
*/
private Integer code;
/**
* 响应消息
* 可使用message的简写msg替代,不过这里是为了保持和原项目中使用习惯一致
*/
private String message;
/**
* 数据单元
*/
private T data;
/**
* 无参构造方法
*/
public Result() {
super();
}
public Result(boolean success, Integer code, String message, T data) {
super();
this.success = success;
this.code = code;
this.message = message;
this.data = data;
}
public Result(boolean success, Integer code, T data) {
super();
this.success = success;
this.code = code;
this.data = data;
}
public Result(boolean success, Integer code, String message) {
super();
this.success = success;
this.code = code;
this.message = message;
}
public boolean isSuccess() {
return success;
}
public Result<T> setSuccess(boolean success) {
this.success = success;
return this;
}
public Integer getCode() {
return code;
}
public Result<T> setCode(Integer code) {
this.code = code;
return this;
}
public String getMessage() {
return message;
}
public Result<T> setMessage(String message) {
this.message = message;
return this;
}
public T getData() {
return data;
}
public Result<T> setData(T data) {
this.data = data;
return this;
}
/**
* 常用响应码枚举
*/
public enum Type {
/** 成功 用1表示 与true相呼应 */
SUCCESS(1),
/** 失败 用0表示 与false相呼应 */
ERROR(0);
private final Integer value;
Type(int value) {
this.value = value;
}
/**
* 返回响应码的值
* @return
*/
public int value() {
return this.value;
}
}
/**
* 定义成功时调用的方法
*
* <p><b>code=1 用1表示成功 与true相呼应</b></p>
*
* @param data 数据单元
* @return Result<T>
*/
public static <T> Result<T> success(T data) {
return new Result<T>(true, Type.SUCCESS.value, data);
}
/**
* 定义成功时调用的方法
*
* <p><b>code=1 用1表示成功 与true相呼应</b></p>
*
* @param message 响应消息
* @param data 数据单元
* @return Result<T>
*/
public static <T> Result<T> success(String message, T data) {
return new Result<T>(true, Type.SUCCESS.value, message, data);
}
/**
* 定义失败时调用的方法
*
* <pre><b>code=0 用0表示失败 与false相呼应</pre>
*
* @param message 响应消息
* @return Result<T>
*/
public static <T> Result<T> error(String message) {
return new Result<T>(false, Type.ERROR.value, message);
}
/**
* 快速创建Result实例的方法
*
* <pre>create、build、instance 创建、建造、实例</pre>
*
* @param success 是否成功
* @param code 响应码
* @param message 响应消息
* @param data 数据单元
* @return Result<T>
*/
public static <T> Result<T> create(boolean success, Integer code, String message, T data) {
return new Result<T>(success, code, message, data);
}
/**
* 快速创建Result实例的方法
*
* <pre>create、build、instance 创建、建造、实例</pre>
*
* @param success 是否成功
* @param code 响应码
* @param message 响应消息
* @return Result<T>
*/
public static <T> Result<T> create(boolean success, Integer code, String message) {
return new Result<T>(success, code, message);
}
/**
* 快速创建Result实例的方法
*
* <pre>create、build、instance 创建、建造、实例</pre>
*
* @param booelan 是否成功
* @param message 响应消息
* @return Result<T>
*/
public static <T> Result<T> create(boolean success, String message) {
Integer code = success ? Type.SUCCESS.value : Type.ERROR.value;
return new Result<T>(success, code, message);
}
/**
* 实例对象转为Map对象
* @return Map
*/
public Map<String, Object> toMap() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("success", this.success);
map.put("code", this.code);
map.put("message", this.message);
map.put("data", this.data);
return map;
}
@Override
public String toString() {
return "Result{" +
"success=" + success +
"code=" + code +
", message='" + message + '\'' +
", data=" + data +
'}';
}
}
用心工作,认真生活。