提交 | 用户 | 时间
e7c126 1 package com.iailab.framework.common.pojo;
H 2
3 import com.iailab.framework.common.exception.ErrorCode;
4 import com.iailab.framework.common.exception.ServiceException;
5 import com.iailab.framework.common.exception.enums.GlobalErrorCodeConstants;
6 import com.fasterxml.jackson.annotation.JsonIgnore;
7 import lombok.Data;
8 import org.springframework.util.Assert;
9
10 import java.io.Serializable;
11 import java.util.Objects;
12
13 /**
14  * 通用返回
15  *
16  * @param <T> 数据泛型
17  */
18 @Data
19 public class CommonResult<T> implements Serializable {
20
21     /**
22      * 错误码
23      *
24      * @see ErrorCode#getCode()
25      */
26     private Integer code;
27     /**
28      * 返回数据
29      */
30     private T data;
31     /**
32      * 错误提示,用户可阅读
33      *
34      * @see ErrorCode#getMsg() ()
35      */
36     private String msg;
37
38     /**
39      * 将传入的 result 对象,转换成另外一个泛型结果的对象
40      *
41      * 因为 A 方法返回的 CommonResult 对象,不满足调用其的 B 方法的返回,所以需要进行转换。
42      *
43      * @param result 传入的 result 对象
44      * @param <T>    返回的泛型
45      * @return 新的 CommonResult 对象
46      */
47     public static <T> CommonResult<T> error(CommonResult<?> result) {
48         return error(result.getCode(), result.getMsg());
49     }
50
51     public static <T> CommonResult<T> error(Integer code, String message) {
52         Assert.isTrue(!GlobalErrorCodeConstants.SUCCESS.getCode().equals(code), "code 必须是错误的!");
53         CommonResult<T> result = new CommonResult<>();
54         result.code = code;
55         result.msg = message;
56         return result;
57     }
58
59     public static <T> CommonResult<T> error(ErrorCode errorCode) {
60         return error(errorCode.getCode(), errorCode.getMsg());
61     }
62
63     public static <T> CommonResult<T> success(T data) {
64         CommonResult<T> result = new CommonResult<>();
65         result.code = GlobalErrorCodeConstants.SUCCESS.getCode();
66         result.data = data;
67         result.msg = "";
68         return result;
69     }
70
449017 71     public static CommonResult<String> success() {
D 72         CommonResult<String> result = new CommonResult<>();
73         result.code = GlobalErrorCodeConstants.SUCCESS.getCode();
74         result.msg = "success";
75         return result;
76     }
77
e7c126 78     public static boolean isSuccess(Integer code) {
H 79         return Objects.equals(code, GlobalErrorCodeConstants.SUCCESS.getCode());
80     }
81
82     @JsonIgnore // 避免 jackson 序列化
83     public boolean isSuccess() {
84         return isSuccess(code);
85     }
86
87     @JsonIgnore // 避免 jackson 序列化
88     public boolean isError() {
89         return !isSuccess();
90     }
91
92     // ========= 和 Exception 异常体系集成 =========
93
94     /**
95      * 判断是否有异常。如果有,则抛出 {@link ServiceException} 异常
96      */
97     public void checkError() throws ServiceException {
98         if (isSuccess()) {
99             return;
100         }
101         // 业务异常
102         throw new ServiceException(code, msg);
103     }
104
105     /**
106      * 判断是否有异常。如果有,则抛出 {@link ServiceException} 异常
107      * 如果没有,则返回 {@link #data} 数据
108      */
109     @JsonIgnore // 避免 jackson 序列化
110     public T getCheckedData() {
111         checkError();
112         return data;
113     }
114
115     public static <T> CommonResult<T> error(ServiceException serviceException) {
116         return error(serviceException.getCode(), serviceException.getMessage());
117     }
118
119 }