159 lines
4.1 KiB
Java
159 lines
4.1 KiB
Java
package com.mir4updater.backend.result;
|
||
|
||
import java.util.HashMap;
|
||
import java.util.List;
|
||
import java.util.Map;
|
||
|
||
public class Result<T> {
|
||
// 响应状态
|
||
private boolean success;
|
||
// 状态码
|
||
private int code;
|
||
// 响应消息
|
||
private String message;
|
||
// 响应数据(泛型)
|
||
private T data;
|
||
|
||
// 常用状态码常量
|
||
public static final int CODE_SUCCESS = 200;
|
||
public static final int CODE_UNKNOWN_REASON = 201;
|
||
public static final int CODE_ERROR = 500;
|
||
public static final int CODE_BAD_REQUEST = 400;
|
||
public static final int CODE_UNAUTHORIZED = 401;
|
||
public static final int CODE_NOT_FOUND = 404;
|
||
|
||
// 私有构造方法
|
||
private Result() {
|
||
}
|
||
|
||
// 链式调用方法
|
||
public Result<T> setSuccess(boolean success) {
|
||
this.success = success;
|
||
return this;
|
||
}
|
||
|
||
public Result<T> setCode(int code) {
|
||
this.code = code;
|
||
return this;
|
||
}
|
||
|
||
public Result<T> setMessage(String message) {
|
||
this.message = message;
|
||
return this;
|
||
}
|
||
|
||
public Result<T> setData(T data) {
|
||
this.data = data;
|
||
return this;
|
||
}
|
||
|
||
// Getter方法
|
||
public boolean isSuccess() {
|
||
return success;
|
||
}
|
||
|
||
public int getCode() {
|
||
return code;
|
||
}
|
||
|
||
public String getMessage() {
|
||
return message;
|
||
}
|
||
|
||
public T getData() {
|
||
return data;
|
||
}
|
||
|
||
// 成功静态方法
|
||
public static <T> Result<T> success() {
|
||
return success(null);
|
||
}
|
||
|
||
public static <T> Result<T> success(T data) {
|
||
return new Result<T>()
|
||
.setSuccess(true)
|
||
.setCode(CODE_SUCCESS)
|
||
.setMessage("操作成功")
|
||
.setData(data);
|
||
}
|
||
|
||
// 错误静态方法
|
||
public static <T> Result<T> error() {
|
||
return error(null);
|
||
}
|
||
|
||
public static <T> Result<T> error(String message) {
|
||
return error(message, CODE_ERROR);
|
||
}
|
||
|
||
public static <T> Result<T> error(String message, int code) {
|
||
return new Result<T>()
|
||
.setSuccess(false)
|
||
.setCode(code)
|
||
.setMessage(message);
|
||
}
|
||
|
||
public static <T> Result<T> notFound() {
|
||
return new Result<T>()
|
||
.setSuccess(false)
|
||
.setCode(CODE_NOT_FOUND)
|
||
.setMessage("没有找到数据");
|
||
}
|
||
|
||
// 快速创建Map类型data(示例)
|
||
public static Result<Map<String, Object>> mapResult() {
|
||
return new Result<Map<String, Object>>()
|
||
.setData(new HashMap<>());
|
||
}
|
||
|
||
public static Result<Map<String, Object>> mapResult(String key, Object value) {
|
||
Map<String, Object> map = new HashMap<>();
|
||
map.put(key, value);
|
||
return new Result<Map<String, Object>>()
|
||
.setData(map);
|
||
}
|
||
|
||
public static Result<Map<String, Object>> mapResult(Map<String, Object> map) {
|
||
return new Result<Map<String, Object>>()
|
||
.setData(map);
|
||
}
|
||
|
||
// 快速创建List类型data(示例)
|
||
public static <E> Result<List<E>> listResult(List<E> list) {
|
||
return new Result<List<E>>()
|
||
.setData(list);
|
||
}
|
||
|
||
|
||
// 示例用法
|
||
public static void main(String[] args) {
|
||
// 1. 返回简单对象
|
||
Result<User> userResult = Result.success(new User("Alice", 25));
|
||
|
||
// 2. 返回Map
|
||
Map<String, Object> dataMap = new HashMap<>();
|
||
dataMap.put("page", 1);
|
||
dataMap.put("total", 100);
|
||
Result<Map<String, Object>> mapResult = Result.mapResult(dataMap);
|
||
Result<Map<String, Object>> map = Result.mapResult().setData(dataMap);
|
||
|
||
// 3. 返回List
|
||
Result<List<String>> listResult = Result.listResult(List.of("A", "B", "C"));
|
||
|
||
// 4. 错误返回
|
||
Result<?> errorResult = Result.error("参数校验失败", CODE_BAD_REQUEST);
|
||
}
|
||
|
||
// 示例内部类
|
||
static class User {
|
||
private String name;
|
||
private int age;
|
||
|
||
public User(String name, int age) {
|
||
this.name = name;
|
||
this.age = age;
|
||
}
|
||
|
||
// getters/setters...
|
||
}
|
||
} |