Result
package com.xxx.xxx.api;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Optional;
/**
* @author xxx
*/
@Data
@Accessors(chain = true)
public class Result<T> implements Serializable {
/**
* serialVersionUID
*/
private static final long serialVersionUID = 1L;
/**
* 业务错误码
*/
private long code;
/**
* 结果集
*/
private T data;
/**
* 描述
*/
private String msg;
/**
* 响应时间
* 觉得格式不好看,自己处理一下
*/
private String responseTime = LocalDateTime.now();
public Result() {
// to do nothing
}
public Result(ApiErrorCode errorCode) {
errorCode = Optional.ofNullable(errorCode).orElse(ApiErrorCode.FAILED);
this.code = errorCode.getCode();
this.msg = errorCode.getMsg();
}
public static <T> Result<T> ok(T data) {
ApiErrorCode aec = ApiErrorCode.SUCCESS;
if (data instanceof Boolean && Boolean.FALSE.equals(data)) {
aec = ApiErrorCode.FAILED;
}
return restResult(data, aec);
}
public static <T> Result<T> failed(String msg) {
return restResult(null, ApiErrorCode.FAILED.getCode(), msg);
}
public static <T> Result<T> failed(ApiErrorCode errorCode) {
return restResult(null, errorCode);
}
public static <T> Result<T> restResult(T data, ApiErrorCode errorCode) {
return restResult(data, errorCode.getCode(), errorCode.getMsg());
}
private static <T> Result<T> restResult(T data, long code, String msg) {
Result<T> apiResult = new Result<>();
apiResult.setCode(code);
apiResult.setData(data);
apiResult.setMsg(msg);
return apiResult;
}
public boolean ok() {
return ApiErrorCode.SUCCESS.getCode() == code;
}
/**
* 服务间调用非业务正常,异常直接释放
*/
public T serviceData() throws Exception {
if (!ok()) {
throw new Exception(this.msg);
}
return data;
}
}
ApiErrorCode
package com.xxx.xxx.api;
public enum ApiErrorCode {
/**
* 失败
*/
FAILED(-1, "操作失败"),
/**
* 服务 异常
*/
SERVICE(500, "服务异常"),
/**
* 成功
*/
SUCCESS(0, "执行成功");
private final long code;
private final String msg;
ApiErrorCode(final long code, final String msg) {
this.code = code;
this.msg = msg;
}
public static ApiErrorCode fromCode(long code) {
ApiErrorCode[] ecs = ApiErrorCode.values();
for (ApiErrorCode ec : ecs) {
if (ec.getCode() == code) {
return ec;
}
}
return SUCCESS;
}
public long getCode() {
return code;
}
public String getMsg() {
return msg;
}
@Override
public String toString() {
return String.format(" ErrorCode:{code=%s, msg=%s} ", code, msg);
}
}