|
@@ -0,0 +1,129 @@
|
|
|
+/*
|
|
|
+ * Copyright (c) 2025 GaoKunW
|
|
|
+ *
|
|
|
+ */
|
|
|
+
|
|
|
+package org.eco.vip.orm.pojo;
|
|
|
+
|
|
|
+
|
|
|
+import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import lombok.Builder;
|
|
|
+import lombok.Data;
|
|
|
+import lombok.NoArgsConstructor;
|
|
|
+import org.eco.vip.orm.exception.BusinessException;
|
|
|
+import org.eco.vip.orm.exception.ErrorCode;
|
|
|
+import org.eco.vip.orm.exception.enums.GlobalErrorCode;
|
|
|
+import org.springframework.util.Assert;
|
|
|
+
|
|
|
+import java.io.Serializable;
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @description CommonResult
|
|
|
+ *
|
|
|
+ * @author GaoKunW
|
|
|
+ * @date 2025/7/1 13:47
|
|
|
+ */
|
|
|
+@NoArgsConstructor
|
|
|
+@AllArgsConstructor
|
|
|
+@Builder
|
|
|
+@Data
|
|
|
+public class CommonResult<T> implements Serializable {
|
|
|
+ /**
|
|
|
+ * 错误码
|
|
|
+ *
|
|
|
+ * @see ErrorCode#getCode()
|
|
|
+ */
|
|
|
+ private Integer code;
|
|
|
+ /**
|
|
|
+ * 返回数据
|
|
|
+ */
|
|
|
+ private T result;
|
|
|
+ /**
|
|
|
+ * 错误提示,用户可阅读
|
|
|
+ *
|
|
|
+ * @see ErrorCode#getMsg() ()
|
|
|
+ */
|
|
|
+ private String message;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 将传入的 result 对象,转换成另外一个泛型结果的对象
|
|
|
+ * 因为 A 方法返回的 CommonResult 对象,不满足调用其的 B 方法的返回,所以需要进行转换。
|
|
|
+ *
|
|
|
+ * @param result 传入的 result 对象
|
|
|
+ * @param <T> 返回的泛型
|
|
|
+ * @return 新的 CommonResult 对象
|
|
|
+ */
|
|
|
+ public static <T> CommonResult<T> error(CommonResult<?> result) {
|
|
|
+ return error(result.getCode(), result.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ public static <T> CommonResult<T> error(Integer code, String message) {
|
|
|
+ Assert.isTrue(!GlobalErrorCode.SUCCESS.getCode().equals(code), "code 必须是错误的!");
|
|
|
+ CommonResult<T> result = new CommonResult<>();
|
|
|
+ result.code = code;
|
|
|
+ result.message = message;
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static <T> CommonResult<T> error(ErrorCode errorCode) {
|
|
|
+ return error(errorCode.getCode(), errorCode.getMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+ public static <T> CommonResult<T> success(T data) {
|
|
|
+ CommonResult<T> result = new CommonResult<>();
|
|
|
+ result.code = GlobalErrorCode.SUCCESS.getCode();
|
|
|
+ result.result = data;
|
|
|
+ result.message = "";
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static <T> CommonResult<T> success() {
|
|
|
+ CommonResult<T> result = new CommonResult<>();
|
|
|
+ result.code = GlobalErrorCode.SUCCESS.getCode();
|
|
|
+ result.message = "";
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static boolean isSuccess(Integer code) {
|
|
|
+ return Objects.equals(code, GlobalErrorCode.SUCCESS.getCode());
|
|
|
+ }
|
|
|
+
|
|
|
+ @JsonIgnore
|
|
|
+ public boolean isSuccess() {
|
|
|
+ return isSuccess(code);
|
|
|
+ }
|
|
|
+
|
|
|
+ @JsonIgnore
|
|
|
+ public boolean isError() {
|
|
|
+ return !isSuccess();
|
|
|
+ }
|
|
|
+
|
|
|
+ // ========= 和 Exception 异常体系集成 =========
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断是否有异常。如果有,则抛出 {@link BusinessException} 异常
|
|
|
+ */
|
|
|
+ public void checkError() throws BusinessException {
|
|
|
+ if (isSuccess()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 业务异常
|
|
|
+ throw new BusinessException(code, message);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断是否有异常。如果有,则抛出 {@link BusinessException} 异常
|
|
|
+ * 如果没有,则返回 {@link #result} 数据
|
|
|
+ */
|
|
|
+ @JsonIgnore
|
|
|
+ public T getCheckedData() {
|
|
|
+ checkError();
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static <T> CommonResult<T> error(BusinessException businessException) {
|
|
|
+ return error(businessException.getCode(), businessException.getMessage());
|
|
|
+ }
|
|
|
+}
|