result code
import lombok.Getter;
/**
* Description:
* 全局统一返回枚举类,统一异常码及话术
* <p>
* date: 2022/9/14 11:53
*
* @author Arvin Lee
* @version 1.0
*/
@Getter
public enum ResultCode {
/**
* 全局统一默认成功状态码
*/
OK("200", "请求成功!"),
/**
* 全局统一默认失败状态码
*/
ERR("SYSTEM-5000", "服务器异常,请联系管理员!"),
PARAMS_IS_EMPTY("SYSTEM-5001", "入参不可为空!"),
CONVERT_ERR("SYSTEM-5002", "数据转换失败!"),
OPERATION_FAILURE("SYSTEM-5003", "操作失败!"),
FILE_TYPE_ERR("SYSTEM-5004", "文件类型不正确!"),
PARAMS_VALID_FAIL("SYSTEM-5005","参数校验失败!");
ResultCode(String code, String msg) {
this.code = code;
this.msg = msg;
}
private final String code;
private final String msg;
}
result
import com.dmu.hct.model.enums.ResultCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* Description:
* 统一返回对象
* <p>
* date: 2022/9/14 11:58
*
* @author Arvin Lee
* @version 1.0
*/
@Getter
@ApiModel(value = "后端统一返回对象")
public class Result<T> {
@ApiModelProperty(value = "自定义状态码")
private final String code;
@ApiModelProperty(value = "自定义话术")
private final String msg;
@ApiModelProperty(value = "返回的数据集")
private final T data;
@ApiModelProperty(value = "附加数据")
private final Object attach;
/**
* Result
* 有参构造方法
*
* @param code 状态码
* @param msg 话术
* @param data 数据
* @param attach 附加数据
* @author Arvin Lee
* @date 2021/11/16 16:54
**/
Result(String code, String msg, T data, Object attach) {
this.code = code;
this.msg = msg;
this.data = data;
this.attach = attach;
}
/**
* ok
* 默认成功返回
*
* @return Result<T>
* @author Arvin Lee
* @date 2021/11/16 17:08
**/
public static <T> Result<T> ok() {
return Result.result(ResultCode.OK.getCode(), ResultCode.OK.getMsg(), null, null);
}
/**
* err
* 默认异常返回
*
* @return Result<T>
* @author Arvin Lee
* @date 2021/12/7 11:03
**/
public static <T> Result<T> err() {
return Result.result(ResultCode.ERR.getCode(), ResultCode.ERR.getMsg(), null, null);
}
public static <T> Result<T> err(String msg) {
return Result.result(ResultCode.ERR.getCode(), msg, null, null);
}
public static <T> Result<T> err(T data) {
return Result.result(ResultCode.ERR.getCode(), ResultCode.ERR.getMsg(), data, null);
}
public static <T> Result<T> err(T data, Object attach) {
return Result.result(ResultCode.ERR.getCode(), ResultCode.ERR.getMsg(), data, attach);
}
public static <T> Result<T> err(Enum<? extends Enum> enums) {
return Result.err(enums, null, null);
}
public static <T> Result<T> err(Enum<? extends Enum> enums, T data) {
return Result.err(enums, data, null);
}
public static <T> Result<T> err(Enum<? extends Enum> enums, T data, Object attach) {
try {
// 通过java反射获取对应方法
Method getCode = enums.getClass().getMethod("getCode");
Method getMsg = enums.getClass().getMethod("getMsg");
return Result.result(getCode.invoke(enums).toString(), getMsg.invoke(enums).toString(), data, attach);
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
return Result.err();
}
}
public static <T> Result<T> ok(T data) {
return Result.result(ResultCode.OK.getCode(), ResultCode.OK.getMsg(), data, null);
}
public static <T> Result<T> ok(T data, Object attach) {
return Result.result(ResultCode.OK.getCode(), ResultCode.OK.getMsg(), data, attach);
}
public boolean isOk() {
return ResultCode.OK.getCode().equals(code);
}
/**
* result
* 完全自定义的返回对象,成功失败通用
*
* @param code 状态码
* @param msg 话术
* @param data 数据
* @param attach 附加数据
* @return Result<T>
* @author Arvin Lee
* @date 2021/11/16 17:09
**/
public static <T> Result<T> result(String code, String msg, T data, Object attach) {
return new Result<>(code, msg, data, attach);
}
}