From 40516d9543e1d67303b6ab2a5fcc1dc3507c3c1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A6=82=E6=A2=A6=E6=8A=80=E6=9C=AF?= <596392912@qq.com> Date: Mon, 17 May 2021 18:43:07 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20mica-core=20R=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20throwOn=20=E7=B3=BB=E5=88=97=E6=96=B9=E6=B3=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../java/net/dreamlu/mica/core/result/R.java | 45 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bcc8199..1ac6ee3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - :sparkles: mica-ip2region、mica-captcha 添加对 spring-native 的支持 #38 #I3PX2N - :sparkles: mica-jetcache 完善 metrics 待续 #37 #I3PX2K - :sparkles: mica-caffeine 添加不支持自定义 Caffeine bean 提示。 +- :sparkles: mica-core R 添加 throwOn 系列方法。 - :bug: mica-logging 修复 LoggingInitializer Spring boot 2.4.x 失效的问题。 - :arrow_up: 升级 druid 到 1.2.6 diff --git a/mica-core/src/main/java/net/dreamlu/mica/core/result/R.java b/mica-core/src/main/java/net/dreamlu/mica/core/result/R.java index ffff286a..6ab81aeb 100644 --- a/mica-core/src/main/java/net/dreamlu/mica/core/result/R.java +++ b/mica-core/src/main/java/net/dreamlu/mica/core/result/R.java @@ -27,6 +27,8 @@ import org.springframework.lang.Nullable; import java.io.Serializable; import java.util.Optional; +import java.util.function.Function; +import java.util.function.Predicate; /** * 响应信息主体 @@ -187,6 +189,49 @@ public class R implements Serializable { return new R<>(rCode, msg); } + /** + * 断言 成功时:直接抛出失败异常,返回传入的 result。 + * + * @param predicate 断言函数 + * @param object 模型 + * @param result 响应对象 + * @param 泛型 + */ + public static void throwOn(Predicate predicate, T object, R result) { + if (predicate.test(object)) { + throw new ServiceException(result); + } + } + + /** + * 断言 成功时:直接抛出失败异常,返回传入的 result。 + * + * @param predicate 断言函数 + * @param object 模型 + * @param rCode 响应 code + * @param 泛型 + */ + public static void throwOn(Predicate predicate, T object, IResultCode rCode) { + if (predicate.test(object)) { + throw new ServiceException(rCode); + } + } + + /** + * 断言 成功时:直接抛出失败异常,返回传入的 result。 + * + * @param predicate 断言函数 + * @param object 模型 + * @param rCode 响应 code + * @param msg 自定义消息 + * @param 泛型 + */ + public static void throwOn(Predicate predicate, T object, IResultCode rCode, String msg) { + if (predicate.test(object)) { + throw new ServiceException(rCode, msg); + } + } + /** * 当 result 不成功时:直接抛出失败异常,返回传入的 result。 * -- GitLab