From 2da4a16172a72137e47c4f3e7a2c61e51ca16f1a Mon Sep 17 00:00:00 2001 From: "Yangkai.Shen" <237497819@qq.com> Date: Sat, 20 Aug 2022 02:07:41 +0800 Subject: [PATCH] =?UTF-8?q?:recycle:=20=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E9=80=9A=E7=94=A8=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xkcoding/common/enums/CommonStatus.java | 26 +++++++++ .../com/xkcoding/common/enums/base/IStatus.java | 23 ++++++++ .../common/exception/CommonBizException.java | 43 ++++++++++++++ .../xkcoding/common/model/viewmodel/Response.java | 65 ++++++++++++++++++++++ 4 files changed, 157 insertions(+) create mode 100644 common-tools/src/main/java/com/xkcoding/common/enums/CommonStatus.java create mode 100644 common-tools/src/main/java/com/xkcoding/common/enums/base/IStatus.java create mode 100644 common-tools/src/main/java/com/xkcoding/common/exception/CommonBizException.java create mode 100644 common-tools/src/main/java/com/xkcoding/common/model/viewmodel/Response.java diff --git a/common-tools/src/main/java/com/xkcoding/common/enums/CommonStatus.java b/common-tools/src/main/java/com/xkcoding/common/enums/CommonStatus.java new file mode 100644 index 0000000..4288857 --- /dev/null +++ b/common-tools/src/main/java/com/xkcoding/common/enums/CommonStatus.java @@ -0,0 +1,26 @@ +package com.xkcoding.common.enums; + +import com.xkcoding.common.enums.base.IStatus; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 常用状态 + * + * @author 一珩(沈扬凯 yk.shen@tuya.com) + * @date 2022-08-20 01:49 + */ +@Getter +@AllArgsConstructor +public enum CommonStatus implements IStatus { + /** + * 操作状态码 + */ + OK(200, "请求成功"), + BASE_ERROR(202, "基础服务异常"), + PARAM_ERROR(203, "请求参数缺失"), + SERVER_ERROR(500, "系统错误,请联系管理员"); + + private final Integer code; + private final String desc; +} diff --git a/common-tools/src/main/java/com/xkcoding/common/enums/base/IStatus.java b/common-tools/src/main/java/com/xkcoding/common/enums/base/IStatus.java new file mode 100644 index 0000000..86f33f0 --- /dev/null +++ b/common-tools/src/main/java/com/xkcoding/common/enums/base/IStatus.java @@ -0,0 +1,23 @@ +package com.xkcoding.common.enums.base; + +/** + * 状态抽象 + * + * @author 一珩(沈扬凯 yk.shen@tuya.com) + * @date 2022-08-20 01:49 + */ +public interface IStatus { + /** + * 状态码 + * + * @return 状态码 + */ + Integer getCode(); + + /** + * 描述 + * + * @return 描述 + */ + String getDesc(); +} diff --git a/common-tools/src/main/java/com/xkcoding/common/exception/CommonBizException.java b/common-tools/src/main/java/com/xkcoding/common/exception/CommonBizException.java new file mode 100644 index 0000000..1607f38 --- /dev/null +++ b/common-tools/src/main/java/com/xkcoding/common/exception/CommonBizException.java @@ -0,0 +1,43 @@ +package com.xkcoding.common.exception; + +import com.xkcoding.common.enums.CommonStatus; +import com.xkcoding.common.enums.base.IStatus; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 通用业务异常 + * + * @author 一珩(沈扬凯 yk.shen@tuya.com) + * @date 2022-08-20 01:55 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class CommonBizException extends RuntimeException { + public Integer code; + private String message; + + public CommonBizException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public CommonBizException(Throwable cause) { + super(cause); + this.code = CommonStatus.SERVER_ERROR.getCode(); + this.message = cause.getMessage(); + } + + public CommonBizException(String message) { + super(message); + this.code = CommonStatus.SERVER_ERROR.getCode(); + this.message = message; + } + + public CommonBizException(IStatus status) { + super(status.getDesc()); + this.code = status.getCode(); + this.message = status.getDesc(); + } +} diff --git a/common-tools/src/main/java/com/xkcoding/common/model/viewmodel/Response.java b/common-tools/src/main/java/com/xkcoding/common/model/viewmodel/Response.java new file mode 100644 index 0000000..46f9bca --- /dev/null +++ b/common-tools/src/main/java/com/xkcoding/common/model/viewmodel/Response.java @@ -0,0 +1,65 @@ +package com.xkcoding.common.model.viewmodel; + +import com.xkcoding.common.enums.CommonStatus; +import com.xkcoding.common.enums.base.IStatus; +import com.xkcoding.common.exception.CommonBizException; +import lombok.Data; + +import java.io.Serializable; + +/** + * 通用接口返回 + * + * @author 一珩(沈扬凯 yk.shen@tuya.com) + * @date 2022-08-20 01:43 + */ +@Data +public class Response implements Serializable { + /** + * 状态码 + */ + private Integer code; + + /** + * 返回内容 + */ + private String message; + + /** + * 返回数据 + */ + private T data; + + private Response() { + } + + private Response(Integer code, String message, T data) { + this.code = code; + this.message = message; + this.data = data; + } + + public static Response of(Integer code, String message, T data) { + return new Response<>(code, message, data); + } + + public static Response ofSuccess(T data) { + return ofStatus(CommonStatus.OK, data); + } + + public static Response ofStatus(IStatus status) { + return ofStatus(status, null); + } + + public static Response ofStatus(IStatus status, T data) { + return of(status.getCode(), status.getDesc(), data); + } + + public static Response ofError(CommonBizException exception, T data) { + return of(exception.getCode(), exception.getMessage(), data); + } + + public static Response ofError(CommonBizException exception) { + return ofError(exception, null); + } +}