|
|
|
@ -1,87 +1,154 @@
|
|
|
|
|
package com.zsz.util;
|
|
|
|
|
|
|
|
|
|
// 导入 Swagger 用于描述 API 模型的注解
|
|
|
|
|
import io.swagger.annotations.ApiModel;
|
|
|
|
|
// 导入 Swagger 用于描述 API 模型属性的注解
|
|
|
|
|
import io.swagger.annotations.ApiModelProperty;
|
|
|
|
|
// 导入 Lombok 的 Data 注解,自动生成 getter、setter、toString 等方法
|
|
|
|
|
import lombok.Data;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 全局统一返回结果类
|
|
|
|
|
*
|
|
|
|
|
* 该类用于封装服务端返回给客户端的统一结果,包含返回码、返回消息和返回数据。
|
|
|
|
|
* 使用泛型 T 可以灵活处理不同类型的返回数据。
|
|
|
|
|
*/
|
|
|
|
|
// 使用 Lombok 的 Data 注解,自动生成 getter、setter、toString、equals、hashCode 等方法
|
|
|
|
|
@Data
|
|
|
|
|
// 使用 Swagger 的 ApiModel 注解,描述该类是全局统一返回结果的模型
|
|
|
|
|
@ApiModel(value = "全局统一返回结果")
|
|
|
|
|
public class Result<T> {
|
|
|
|
|
|
|
|
|
|
// 使用 Swagger 的 ApiModelProperty 注解,描述该属性为返回码
|
|
|
|
|
@ApiModelProperty(value = "返回码")
|
|
|
|
|
// 存储返回码的属性
|
|
|
|
|
private Integer code;
|
|
|
|
|
|
|
|
|
|
// 使用 Swagger 的 ApiModelProperty 注解,描述该属性为返回消息
|
|
|
|
|
@ApiModelProperty(value = "返回消息")
|
|
|
|
|
// 存储返回消息的属性
|
|
|
|
|
private String message;
|
|
|
|
|
|
|
|
|
|
// 使用 Swagger 的 ApiModelProperty 注解,描述该属性为返回数据
|
|
|
|
|
@ApiModelProperty(value = "返回数据")
|
|
|
|
|
// 存储返回数据的属性,使用泛型 T 可以接受任意类型的数据
|
|
|
|
|
private T data;
|
|
|
|
|
|
|
|
|
|
public Result(){}
|
|
|
|
|
// 无参构造函数,用于创建一个空的 Result 对象
|
|
|
|
|
public Result() {}
|
|
|
|
|
|
|
|
|
|
// 返回数据
|
|
|
|
|
/**
|
|
|
|
|
* 构建一个包含数据的 Result 对象
|
|
|
|
|
* @param data 要返回的数据
|
|
|
|
|
* @param <T> 数据的类型
|
|
|
|
|
* @return 包含数据的 Result 对象
|
|
|
|
|
*/
|
|
|
|
|
protected static <T> Result<T> build(T data) {
|
|
|
|
|
// 创建一个新的 Result 对象
|
|
|
|
|
Result<T> result = new Result<T>();
|
|
|
|
|
// 如果传入的数据不为空,则将数据设置到 Result 对象中
|
|
|
|
|
if (data != null)
|
|
|
|
|
result.setData(data);
|
|
|
|
|
// 返回构建好的 Result 对象
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 构建一个包含数据、返回码和返回消息的 Result 对象
|
|
|
|
|
* @param body 要返回的数据
|
|
|
|
|
* @param resultCodeEnum 结果码枚举对象,包含返回码和返回消息
|
|
|
|
|
* @param <T> 数据的类型
|
|
|
|
|
* @return 包含数据、返回码和返回消息的 Result 对象
|
|
|
|
|
*/
|
|
|
|
|
public static <T> Result<T> build(T body, ResultCodeEnum resultCodeEnum) {
|
|
|
|
|
// 先调用 build 方法构建一个包含数据的 Result 对象
|
|
|
|
|
Result<T> result = build(body);
|
|
|
|
|
// 从结果码枚举对象中获取返回码并设置到 Result 对象中
|
|
|
|
|
result.setCode(resultCodeEnum.getCode());
|
|
|
|
|
// 从结果码枚举对象中获取返回消息并设置到 Result 对象中
|
|
|
|
|
result.setMessage(resultCodeEnum.getMessage());
|
|
|
|
|
// 返回构建好的 Result 对象
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static<T> Result<T> ok(){
|
|
|
|
|
/**
|
|
|
|
|
* 操作成功,返回不包含数据的 Result 对象
|
|
|
|
|
* @param <T> 数据的类型
|
|
|
|
|
* @return 操作成功的 Result 对象
|
|
|
|
|
*/
|
|
|
|
|
public static <T> Result<T> ok() {
|
|
|
|
|
// 调用 ok 方法,传入 null 表示不包含数据
|
|
|
|
|
return Result.ok(null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 操作成功
|
|
|
|
|
* @param data
|
|
|
|
|
* @param <T>
|
|
|
|
|
* @return
|
|
|
|
|
* 操作成功,返回包含数据的 Result 对象
|
|
|
|
|
* @param data 要返回的数据
|
|
|
|
|
* @param <T> 数据的类型
|
|
|
|
|
* @return 操作成功的 Result 对象
|
|
|
|
|
*/
|
|
|
|
|
public static<T> Result<T> ok(T data){
|
|
|
|
|
public static <T> Result<T> ok(T data) {
|
|
|
|
|
// 先调用 build 方法构建一个包含数据的 Result 对象
|
|
|
|
|
Result<T> result = build(data);
|
|
|
|
|
// 调用 build 方法,传入数据和成功的结果码枚举对象,设置返回码和返回消息
|
|
|
|
|
return build(data, ResultCodeEnum.SUCCESS);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static<T> Result<T> fail(){
|
|
|
|
|
/**
|
|
|
|
|
* 操作失败,返回不包含数据的 Result 对象
|
|
|
|
|
* @param <T> 数据的类型
|
|
|
|
|
* @return 操作失败的 Result 对象
|
|
|
|
|
*/
|
|
|
|
|
public static <T> Result<T> fail() {
|
|
|
|
|
// 调用 fail 方法,传入 null 表示不包含数据
|
|
|
|
|
return Result.fail(null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 操作失败
|
|
|
|
|
* @param data
|
|
|
|
|
* @param <T>
|
|
|
|
|
* @return
|
|
|
|
|
* 操作失败,返回包含数据的 Result 对象
|
|
|
|
|
* @param data 要返回的数据
|
|
|
|
|
* @param <T> 数据的类型
|
|
|
|
|
* @return 操作失败的 Result 对象
|
|
|
|
|
*/
|
|
|
|
|
public static<T> Result<T> fail(T data){
|
|
|
|
|
public static <T> Result<T> fail(T data) {
|
|
|
|
|
// 先调用 build 方法构建一个包含数据的 Result 对象
|
|
|
|
|
Result<T> result = build(data);
|
|
|
|
|
// 调用 build 方法,传入数据和失败的结果码枚举对象,设置返回码和返回消息
|
|
|
|
|
return build(data, ResultCodeEnum.FAIL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Result<T> message(String msg){
|
|
|
|
|
/**
|
|
|
|
|
* 设置返回消息,并返回当前 Result 对象,支持链式调用
|
|
|
|
|
* @param msg 要设置的返回消息
|
|
|
|
|
* @return 当前 Result 对象
|
|
|
|
|
*/
|
|
|
|
|
public Result<T> message(String msg) {
|
|
|
|
|
// 设置返回消息
|
|
|
|
|
this.setMessage(msg);
|
|
|
|
|
// 返回当前 Result 对象,支持链式调用
|
|
|
|
|
return this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Result<T> code(Integer code){
|
|
|
|
|
/**
|
|
|
|
|
* 设置返回码,并返回当前 Result 对象,支持链式调用
|
|
|
|
|
* @param code 要设置的返回码
|
|
|
|
|
* @return 当前 Result 对象
|
|
|
|
|
*/
|
|
|
|
|
public Result<T> code(Integer code) {
|
|
|
|
|
// 设置返回码
|
|
|
|
|
this.setCode(code);
|
|
|
|
|
// 返回当前 Result 对象,支持链式调用
|
|
|
|
|
return this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 判断操作是否成功
|
|
|
|
|
* @return 如果返回码等于成功的结果码,则返回 true,否则返回 false
|
|
|
|
|
*/
|
|
|
|
|
public boolean isOk() {
|
|
|
|
|
if(this.getCode().intValue() == ResultCodeEnum.SUCCESS.getCode().intValue()) {
|
|
|
|
|
// 比较当前 Result 对象的返回码和成功的结果码是否相等
|
|
|
|
|
if (this.getCode().intValue() == ResultCodeEnum.SUCCESS.getCode().intValue()) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|