From 501d69b64931dda54b7f926cb6d7ee70f4166c52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=BE=99?= Date: Mon, 2 Dec 2024 13:38:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20(feature/REQ-3167)=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?client?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/tyr/client/common/util/RpcUtil.java | 46 +++++++++++++++++++ .../tyr/client/impl/TerminalClientImpl.java | 4 +- .../inner/feign/BaseFeatureResourceApi.java | 2 +- 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 tyr-api/src/main/java/cn/axzo/tyr/client/common/util/RpcUtil.java diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/common/util/RpcUtil.java b/tyr-api/src/main/java/cn/axzo/tyr/client/common/util/RpcUtil.java new file mode 100644 index 00000000..ebe11409 --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/common/util/RpcUtil.java @@ -0,0 +1,46 @@ +package cn.axzo.tyr.client.common.util; + +import cn.axzo.basics.common.util.AssertUtil; +import cn.axzo.framework.domain.ServiceException; +import cn.axzo.framework.domain.web.result.ApiResult; +import cn.hutool.core.lang.Assert; +import cn.hutool.http.HttpStatus; +import cn.hutool.json.JSONUtil; +import lombok.extern.slf4j.Slf4j; + +import java.util.function.Consumer; +import java.util.function.Supplier; + +@Slf4j +public class RpcUtil { + /** + * 常用的RPC请求返回值解析,如果 被请求方 返回非200会抛出异常 + */ + public static ApiResult rpcProcessor(Supplier> supplier, String operationType, Object... param) { + + return rpcProcessorMayThrow(supplier, operationType, (commonResponse) -> { + throw new ServiceException(commonResponse.getMsg()); + }, param); + } + + public static ApiResult rpcProcessorMayThrow(Supplier> supplier, String operationType, Consumer> throwConsumer, Object... param) { + AssertUtil.notNull(throwConsumer, "自定义的异常处理不可为空"); + log.info(operationType + "-Param: " + JSONUtil.toJsonStr(param)); + ApiResult result = null; + + try { + result = supplier.get(); + } catch (Throwable e) { + throwConsumer.accept(ApiResult.err(e.getMessage())); + } + + log.info(operationType + "-Result: " + JSONUtil.toJsonStr(result)); + Assert.notNull(result, "服务调用异常"); + // 200自定义处理 + if (HttpStatus.HTTP_OK != result.getCode()) { + throwConsumer.accept(result); + } + return result; + } + +} diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/impl/TerminalClientImpl.java b/tyr-api/src/main/java/cn/axzo/tyr/client/impl/TerminalClientImpl.java index 4d82fee2..674c8076 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/impl/TerminalClientImpl.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/impl/TerminalClientImpl.java @@ -2,6 +2,7 @@ package cn.axzo.tyr.client.impl; import cn.axzo.framework.auth.domain.TerminalInfo; import cn.axzo.tyr.client.TerminalClient; +import cn.axzo.tyr.client.common.util.RpcUtil; import cn.axzo.tyr.client.feign.TerminalApi; import cn.axzo.tyr.client.model.req.GetTerminalInfoReq; import com.google.common.cache.CacheBuilder; @@ -31,7 +32,8 @@ public class TerminalClientImpl implements TerminalClient { GetTerminalInfoReq getTerminalInfoReq = GetTerminalInfoReq.builder() .terminalCode(terminalCode) .build(); - return Optional.ofNullable(terminalApi.getTerminalInfo(getTerminalInfoReq).getData()); + return Optional.ofNullable(RpcUtil.rpcProcessor(() -> terminalApi.getTerminalInfo(getTerminalInfoReq), + "查询端的信息", getTerminalInfoReq).getData()); } }); diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/inner/feign/BaseFeatureResourceApi.java b/tyr-server/src/main/java/cn/axzo/tyr/server/inner/feign/BaseFeatureResourceApi.java index 1034f957..4a13b759 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/inner/feign/BaseFeatureResourceApi.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/inner/feign/BaseFeatureResourceApi.java @@ -20,7 +20,7 @@ import java.util.List; * @author: ZhanSiHu * @date: 2024/4/3 10:25 */ -@FeignClient(name = "tyr", url = "${axzo.service.base.tyr:https://pre-api.axzo.cn/tyr}") +@FeignClient(name = "tyr", url = "${axzo.service.base.tyr:https://test-api.axzo.cn/tyr}") public interface BaseFeatureResourceApi {