优化Result

This commit is contained in:
2025-04-08 20:02:27 +08:00
parent f4a5b789db
commit a123a26274
11 changed files with 247 additions and 219 deletions

View File

@@ -1,129 +1,159 @@
package com.mir4updater.backend.result;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 统一返回格式类
*
* @author 爷爷的茶七里香
* @date 2022/05/30
*/
public class Result {
/**
* 是否成功
*/
private Boolean success;
/**
* 状态码
*/
private Integer code;
/**
* 返回的消息
*/
public class Result<T> {
// 响应状态
private boolean success;
// 状态码
private int code;
// 响应消息
private String message;
// 响应数据(泛型)
private T data;
/**
* 放置响应的数据
*/
private Map<String, Object> data = new HashMap<>();
// 常用状态码常量
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;
public Result() {
// 私有构造方法
private Result() {
}
/** 以下是定义一些常用到的格式,可以看到调用了我们创建的枚举类 */
public static Result ok() {
Result r = new Result();
r.setSuccess(ResultCodeEnum.SUCCESS.getSuccess());
r.setCode(ResultCodeEnum.SUCCESS.getCode());
r.setMessage(ResultCodeEnum.SUCCESS.getMessage());
return r;
}
public static Result error() {
Result r = new Result();
r.setSuccess(ResultCodeEnum.UNKNOWN_REASON.getSuccess());
r.setCode(ResultCodeEnum.UNKNOWN_REASON.getCode());
r.setMessage(ResultCodeEnum.UNKNOWN_REASON.getMessage());
return r;
}
public static Result notFound() {
Result r = new Result();
r.setSuccess(ResultCodeEnum.NOT_FOUND.getSuccess());
r.setCode(ResultCodeEnum.NOT_FOUND.getCode());
r.setMessage(ResultCodeEnum.NOT_FOUND.getMessage());
return r;
}
public static Result setResult(ResultCodeEnum resultCodeEnum) {
Result r = new Result();
r.setSuccess(resultCodeEnum.getSuccess());
r.setCode(resultCodeEnum.getCode());
r.setMessage(resultCodeEnum.getMessage());
return r;
}
public Result success(Boolean success) {
this.setSuccess(success);
// 链式调用方法
public Result<T> setSuccess(boolean success) {
this.success = success;
return this;
}
public Result message(String message) {
this.setMessage(message);
public Result<T> setCode(int code) {
this.code = code;
return this;
}
public Result code(Integer code) {
this.setCode(code);
public Result<T> setMessage(String message) {
this.message = message;
return this;
}
public Result data(String key, Object value) {
this.data.put(key, value);
public Result<T> setData(T data) {
this.data = data;
return this;
}
public Result data(Map<String, Object> map) {
this.setData(map);
return this;
}
/** 以下是get/set方法如果项目有集成lombok可以使用@Data注解代替 */
public Boolean getSuccess() {
// Getter方法
public boolean isSuccess() {
return success;
}
public void setSuccess(Boolean success) {
this.success = success;
}
public Integer getCode() {
public int getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Map<String, Object> getData() {
public T getData() {
return data;
}
public void setData(Map<String, Object> data) {
this.data = 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...
}
}