|
|
@ -0,0 +1,209 @@
|
|
|
|
|
|
|
|
package xyz.wbsite.achat.tools;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 接口响应结果基类
|
|
|
|
|
|
|
|
* 泛型支持的数据响应封装,提供统一的响应格式和错误处理
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @author wangbing
|
|
|
|
|
|
|
|
* @version 0.0.1
|
|
|
|
|
|
|
|
* @since 1.8
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public class Result<T> {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 响应状态码
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private int code = 200;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 响应消息
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private String message = "success";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 响应数据
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private T data;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 是否成功
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private boolean success = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 错误详情,用于表单验证等场景
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private Map<String, String> errors;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 请求ID,用于问题追踪
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private String requestId;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 响应时间戳
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private long timestamp = System.currentTimeMillis();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public int getCode() {
|
|
|
|
|
|
|
|
return code;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Result<T> setCode(int 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 boolean isSuccess() {
|
|
|
|
|
|
|
|
return success;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Result<T> setSuccess(boolean success) {
|
|
|
|
|
|
|
|
this.success = success;
|
|
|
|
|
|
|
|
return this;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Map<String, String> getErrors() {
|
|
|
|
|
|
|
|
return errors;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Result<T> setErrors(Map<String, String> errors) {
|
|
|
|
|
|
|
|
this.errors = errors;
|
|
|
|
|
|
|
|
return this;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String getRequestId() {
|
|
|
|
|
|
|
|
return requestId;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Result<T> setRequestId(String requestId) {
|
|
|
|
|
|
|
|
this.requestId = requestId;
|
|
|
|
|
|
|
|
return this;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public long getTimestamp() {
|
|
|
|
|
|
|
|
return timestamp;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Result<T> setTimestamp(long timestamp) {
|
|
|
|
|
|
|
|
this.timestamp = timestamp;
|
|
|
|
|
|
|
|
return this;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 添加字段级别的错误信息
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param field 字段名
|
|
|
|
|
|
|
|
* @param error 错误信息
|
|
|
|
|
|
|
|
* @return 当前结果对象,支持链式调用
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public Result<T> addError(String field, String error) {
|
|
|
|
|
|
|
|
if (errors == null) {
|
|
|
|
|
|
|
|
errors = new HashMap<>();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
errors.put(field, error);
|
|
|
|
|
|
|
|
return this;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 返回成功信息
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @return 结果
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public static <T> Result<T> success() {
|
|
|
|
|
|
|
|
return new Result<>();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 返回带数据的成功信息
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param data 响应数据
|
|
|
|
|
|
|
|
* @return 结果
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public static <T> Result<T> success(T data) {
|
|
|
|
|
|
|
|
Result<T> result = new Result<>();
|
|
|
|
|
|
|
|
result.setData(data);
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 返回错误信息
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param message 错误信息
|
|
|
|
|
|
|
|
* @return 错误信息对象
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public static <T> Result<T> error(String message) {
|
|
|
|
|
|
|
|
Result<T> result = new Result<>();
|
|
|
|
|
|
|
|
result.message = message;
|
|
|
|
|
|
|
|
result.code = 500;
|
|
|
|
|
|
|
|
result.success = false;
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 返回错误信息
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param code 错误码
|
|
|
|
|
|
|
|
* @param message 错误信息
|
|
|
|
|
|
|
|
* @return 错误信息对象
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public static <T> Result<T> error(int code, String message) {
|
|
|
|
|
|
|
|
Result<T> result = new Result<>();
|
|
|
|
|
|
|
|
result.code = code;
|
|
|
|
|
|
|
|
result.message = message;
|
|
|
|
|
|
|
|
result.success = false;
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 返回带数据的错误信息
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param code 错误码
|
|
|
|
|
|
|
|
* @param message 错误信息
|
|
|
|
|
|
|
|
* @param data 错误相关数据
|
|
|
|
|
|
|
|
* @return 错误信息对象
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public static <T> Result<T> error(int code, String message, T data) {
|
|
|
|
|
|
|
|
Result<T> result = new Result<>();
|
|
|
|
|
|
|
|
result.code = code;
|
|
|
|
|
|
|
|
result.message = message;
|
|
|
|
|
|
|
|
result.success = false;
|
|
|
|
|
|
|
|
result.data = data;
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 从异常创建错误响应
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param e 异常
|
|
|
|
|
|
|
|
* @return 错误信息对象
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public static <T> Result<T> error(Exception e) {
|
|
|
|
|
|
|
|
Result<T> result = new Result<>();
|
|
|
|
|
|
|
|
result.code = 500;
|
|
|
|
|
|
|
|
result.message = e.getMessage() != null ? e.getMessage() : "系统异常";
|
|
|
|
|
|
|
|
result.success = false;
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|