From fa3a76f6e85aa99148a707c4e51384c70686fd5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E5=A4=A7?= <1504665037@qq.com> Date: Thu, 29 Jan 2026 16:45:01 +0800 Subject: [PATCH] =?UTF-8?q?fit:=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=AD=97=E5=85=B8=E5=AF=B9=E5=A4=96=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/system/api/RemoteDictService.java | 43 ++++++++++++++++++ .../factory/RemoteDictFallbackFactory.java | 45 +++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteDictService.java create mode 100644 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteDictFallbackFactory.java diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteDictService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteDictService.java new file mode 100644 index 0000000..fc2343e --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteDictService.java @@ -0,0 +1,43 @@ +package com.ruoyi.system.api; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestHeader; +import com.ruoyi.common.core.constant.SecurityConstants; +import com.ruoyi.common.core.constant.ServiceNameConstants; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.system.api.domain.SysDictData; +import com.ruoyi.system.api.factory.RemoteDictFallbackFactory; + +import java.util.List; + +/** + * 数据字典服务 + * + * @author ruoyi + */ +@FeignClient(contextId = "remoteDictService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteDictFallbackFactory.class) +public interface RemoteDictService +{ + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * @param source 请求来源 + * @return 结果 + */ + @GetMapping("/dict/data/type/{dictType}") + public R> getDictDataByType(@PathVariable("dictType") String dictType, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + /** + * 根据字典类型和值获取字典标签 + * + * @param dictType 字典类型 + * @param dictValue 字典值 + * @param source 请求来源 + * @return 结果 + */ + @GetMapping("/dict/data/label/{dictType}/{dictValue}") + public R getDictLabel(@PathVariable("dictType") String dictType, @PathVariable("dictValue") String dictValue, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteDictFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteDictFallbackFactory.java new file mode 100644 index 0000000..266d5e6 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteDictFallbackFactory.java @@ -0,0 +1,45 @@ +package com.ruoyi.system.api.factory; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.system.api.RemoteDictService; +import com.ruoyi.system.api.domain.SysDictData; + +import java.util.ArrayList; +import java.util.List; + +/** + * 数据字典服务降级处理 + * + * @author ruoyi + */ +@Component +public class RemoteDictFallbackFactory implements FallbackFactory +{ + private static final Logger log = LoggerFactory.getLogger(RemoteDictFallbackFactory.class); + + @Override + public RemoteDictService create(Throwable throwable) + { + log.error("数据字典服务调用失败: {}", throwable.getMessage()); + return new RemoteDictService() + { + @Override + public R> getDictDataByType(String dictType, String source) + { + log.error("根据字典类型查询字典数据失败: {}", dictType); + return R.fail("根据字典类型查询字典数据失败"); + } + + @Override + public R getDictLabel(String dictType, String dictValue, String source) + { + log.error("根据字典类型和值获取字典标签失败: {} - {}", dictType, dictValue); + return R.fail("根据字典类型和值获取字典标签失败"); + } + }; + } +}