From 5ebb4922e87e64a0089c5f7143905cf0b57e6af0 Mon Sep 17 00:00:00 2001 From: syruan <321359594@qq.com> Date: Mon, 12 Aug 2024 15:56:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=9F=BA=E7=A1=80=E6=A0=91?= =?UTF-8?q?=E7=8A=B6controller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bonus/system/api/RemoteDictService.java | 43 ++++++++++++++++ .../factory/RemoteDictFallbackFactory.java | 37 ++++++++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../core/constant/ServiceNameConstants.java | 6 +++ .../base/controller/BaseTreeController.java | 51 +++++++++++++++++++ 5 files changed, 138 insertions(+) create mode 100644 bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/RemoteDictService.java create mode 100644 bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/factory/RemoteDictFallbackFactory.java create mode 100644 bonus-modules/bonus-base/src/main/java/com/bonus/base/controller/BaseTreeController.java diff --git a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/RemoteDictService.java b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/RemoteDictService.java new file mode 100644 index 0000000..9a38ec3 --- /dev/null +++ b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/RemoteDictService.java @@ -0,0 +1,43 @@ +package com.bonus.system.api; + +import com.bonus.common.core.constant.ServiceNameConstants; +import com.bonus.common.core.domain.R; +import com.bonus.system.api.domain.SysDictData; +import com.bonus.system.api.domain.SysDictType; +import com.bonus.system.api.factory.RemoteDictFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * 字典服务 + * @author : 阮世耀 + * @version : 1.0 + * @PackagePath: com.bonus.system.api + * @CreateTime: 2024-08-12 15:31 + * @Description: 字典服务service + */ +@FeignClient(contextId = "remoteDictService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteDictFallbackFactory.class) +public interface RemoteDictService { + + /** + * 查询字典类型 + * + * @param dictName 字典名称 + * @return 结果 + */ + @GetMapping(value = "/dict/type/list") + public R getDictType(@RequestParam(value = "dictName", required = false) String dictName); + + + /** + * 查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据集合信息 + */ + @GetMapping(value = "/dict/data/list") + public R getDictData(@RequestParam(value = "dictType", required = false) String dictType); + + +} diff --git a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/factory/RemoteDictFallbackFactory.java b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/factory/RemoteDictFallbackFactory.java new file mode 100644 index 0000000..e54d8ad --- /dev/null +++ b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/factory/RemoteDictFallbackFactory.java @@ -0,0 +1,37 @@ +package com.bonus.system.api.factory; + +import com.bonus.common.core.domain.R; +import com.bonus.system.api.RemoteDictService; +import com.bonus.system.api.domain.SysDictData; +import com.bonus.system.api.domain.SysDictType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * 字典服务降级处理 + * + * @author bonus + */ +@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 getDictType(String dictType) { + return R.fail("获取字典类型失败" + throwable.getMessage()); + } + + @Override + public R getDictData(String dictType) { + return R.fail("获取字典数据失败" + throwable.getMessage()); + } + }; + } +} diff --git a/bonus-api/bonus-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/bonus-api/bonus-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 83df20b..6c87d58 100644 --- a/bonus-api/bonus-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/bonus-api/bonus-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,3 +1,4 @@ com.bonus.system.api.factory.RemoteUserFallbackFactory com.bonus.system.api.factory.RemoteLogFallbackFactory com.bonus.system.api.factory.RemoteFileFallbackFactory +com.bonus.system.api.factory.RemoteDictFallbackFactory diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/ServiceNameConstants.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/ServiceNameConstants.java index b126e5e..c71d2a1 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/ServiceNameConstants.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/ServiceNameConstants.java @@ -21,4 +21,10 @@ public class ServiceNameConstants * 文件服务的serviceid */ public static final String FILE_SERVICE = "bonus-file"; + + /** + * 字典服务的service + */ + public static final String DICT_SERVICE = "bonus-dict"; + } diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/controller/BaseTreeController.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/controller/BaseTreeController.java new file mode 100644 index 0000000..d55d04b --- /dev/null +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/controller/BaseTreeController.java @@ -0,0 +1,51 @@ +package com.bonus.base.controller; + +import com.bonus.common.core.domain.R; +import com.bonus.system.api.RemoteDictService; +import org.apache.poi.ss.formula.functions.T; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + + +/** + * @author : 阮世耀 + * @version : 1.0 + * @PackagePath: com.bonus.base.controller + * @CreateTime: 2024-08-12 16:23 + * @Description: 公共 下拉框、树形数据 控制器 + */ +@RestController +@RequestMapping("/tree") +public class BaseTreeController { + + @Resource + private RemoteDictService remoteDictService; + + /** + * 获取工程类型 + */ + @RequestMapping("/getProjectType") + public R getProjectType(){ + return R.ok(remoteDictService.getDictData("bm_pro_type")); + } + + /** + * 获取工程状态 + */ + @RequestMapping("/getProjectStatus") + public R getProjectStatus(){ + return R.ok(remoteDictService.getDictData("bm_pro_status")); + } + + /** + * 获取工程性质 + */ + @RequestMapping("/getProjectNature") + public R getProjectNature(){ + return R.ok(remoteDictService.getDictData("bm_pro_nature")); + } + +}