对比新文件 |
| | |
| | | package com.iailab.framework.common.pojo; |
| | | |
| | | import cn.hutool.core.lang.Assert; |
| | | import com.iailab.framework.common.exception.ErrorCode; |
| | | import com.iailab.framework.common.exception.ServiceException; |
| | | import com.iailab.framework.common.exception.enums.GlobalErrorCodeConstants; |
| | | import com.fasterxml.jackson.annotation.JsonIgnore; |
| | | import com.iailab.framework.common.exception.util.ServiceExceptionUtil; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * 通用返回 |
| | | * |
| | | * @param <T> 数据泛型 |
| | | */ |
| | | @Data |
| | | public class CommonResult<T> implements Serializable { |
| | | |
| | | /** |
| | | * 错误码 |
| | | * |
| | | * @see ErrorCode#getCode() |
| | | */ |
| | | private Integer code; |
| | | /** |
| | | * 返回数据 |
| | | */ |
| | | private T data; |
| | | /** |
| | | * 错误提示,用户可阅读 |
| | | * |
| | | * @see ErrorCode#getMsg() () |
| | | */ |
| | | private String msg; |
| | | |
| | | /** |
| | | * 将传入的 result 对象,转换成另外一个泛型结果的对象 |
| | | * |
| | | * 因为 A 方法返回的 CommonResult 对象,不满足调用其的 B 方法的返回,所以需要进行转换。 |
| | | * |
| | | * @param result 传入的 result 对象 |
| | | * @param <T> 返回的泛型 |
| | | * @return 新的 CommonResult 对象 |
| | | */ |
| | | public static <T> CommonResult<T> error(CommonResult<?> result) { |
| | | return error(result.getCode(), result.getMsg()); |
| | | } |
| | | |
| | | public static <T> CommonResult<T> error(Integer code, String message) { |
| | | cn.hutool.core.lang.Assert.notEquals(GlobalErrorCodeConstants.SUCCESS.getCode(), code, "code 必须是错误的!"); |
| | | CommonResult<T> result = new CommonResult<>(); |
| | | result.code = code; |
| | | result.msg = message; |
| | | return result; |
| | | } |
| | | |
| | | public static <T> CommonResult<T> error(ErrorCode errorCode, Object... params) { |
| | | Assert.notEquals(GlobalErrorCodeConstants.SUCCESS.getCode(), errorCode.getCode(), "code 必须是错误的!"); |
| | | CommonResult<T> result = new CommonResult<>(); |
| | | result.code = errorCode.getCode(); |
| | | result.msg = ServiceExceptionUtil.doFormat(errorCode.getCode(), errorCode.getMsg(), params); |
| | | 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 = GlobalErrorCodeConstants.SUCCESS.getCode(); |
| | | result.data = data; |
| | | result.msg = ""; |
| | | return result; |
| | | } |
| | | |
| | | public static CommonResult<String> success() { |
| | | CommonResult<String> result = new CommonResult<>(); |
| | | result.code = GlobalErrorCodeConstants.SUCCESS.getCode(); |
| | | result.msg = "success"; |
| | | return result; |
| | | } |
| | | |
| | | public static boolean isSuccess(Integer code) { |
| | | return Objects.equals(code, GlobalErrorCodeConstants.SUCCESS.getCode()); |
| | | } |
| | | |
| | | @JsonIgnore // 避免 jackson 序列化 |
| | | public boolean isSuccess() { |
| | | return isSuccess(code); |
| | | } |
| | | |
| | | @JsonIgnore // 避免 jackson 序列化 |
| | | public boolean isError() { |
| | | return !isSuccess(); |
| | | } |
| | | |
| | | // ========= 和 Exception 异常体系集成 ========= |
| | | |
| | | /** |
| | | * 判断是否有异常。如果有,则抛出 {@link ServiceException} 异常 |
| | | */ |
| | | public void checkError() throws ServiceException { |
| | | if (isSuccess()) { |
| | | return; |
| | | } |
| | | // 业务异常 |
| | | throw new ServiceException(code, msg); |
| | | } |
| | | |
| | | /** |
| | | * 判断是否有异常。如果有,则抛出 {@link ServiceException} 异常 |
| | | * 如果没有,则返回 {@link #data} 数据 |
| | | */ |
| | | @JsonIgnore // 避免 jackson 序列化 |
| | | public T getCheckedData() { |
| | | checkError(); |
| | | return data; |
| | | } |
| | | |
| | | public static <T> CommonResult<T> error(ServiceException serviceException) { |
| | | return error(serviceException.getCode(), serviceException.getMessage()); |
| | | } |
| | | |
| | | } |