From c91549d129ea94598e82b43d04b57affdc590229 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E7=BB=AA=E5=A3=AE?= <2235602974@qq.com> Date: Thu, 24 Mar 2022 17:52:27 +0800 Subject: [PATCH 1/2] =?UTF-8?q?:sparkles:=20DictResolver=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E5=AD=97=E5=85=B8=E7=B1=BB=E5=9E=8B=E8=8E=B7=E5=8F=96=E5=AD=97?= =?UTF-8?q?=E5=85=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/data/resolver/DictResolver.java | 107 ++++++++++++++++++ .../admin/api/feign/RemoteDictService.java | 27 +++++ .../main/resources/META-INF/spring.factories | 3 +- 3 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/resolver/DictResolver.java create mode 100644 pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteDictService.java diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/resolver/DictResolver.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/resolver/DictResolver.java new file mode 100644 index 000000000..362aeb04b --- /dev/null +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/resolver/DictResolver.java @@ -0,0 +1,107 @@ +package com.pig4cloud.pigx.common.data.resolver; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.pig4cloud.pigx.admin.api.entity.SysDictItem; +import com.pig4cloud.pigx.admin.api.feign.RemoteDictService; +import com.pig4cloud.pigx.common.core.util.SpringContextHolder; +import lombok.experimental.UtilityClass; + +import java.util.List; + +/** + * @author fxz + * @date 2022/3/24 + * 字典解析器 + */ +@UtilityClass +public class DictResolver { + + /** + * 根据字典类型获取所有字典项 + * + * @param type 字典类型 + * @return 字典数据项集合 + */ + @SuppressWarnings("unchecked") + public List getDictItemsByType(String type) { + Assert.isNull(type, "参数不合法"); + + RemoteDictService remoteDictService = SpringContextHolder.getBean(RemoteDictService.class); + + return (List) remoteDictService.getDictByType(type).getData(); + } + + /** + * 根据字典类型以及字典项字典值获取字典标签 + * + * @param type 字典类型 + * @param itemValue 字典项字典值 + * @return 字典项标签值 + */ + public String getDictItemLabel(String type, String itemValue) { + Assert.isTrue(StringUtils.isNotBlank(type) && StringUtils.isNotBlank(itemValue), "参数不合法"); + + SysDictItem sysDictItem = getDictItemByItemValue(type, itemValue); + + return ObjectUtils.isNotEmpty(sysDictItem) ? sysDictItem.getLabel() : StringPool.EMPTY; + } + + /** + * 根据字典类型以及字典标签获取字典值 + * + * @param type 字典类型 + * @param itemLabel 字典数据标签 + * @return 字典数据项值 + */ + public String getDictItemValue(String type, String itemLabel) { + Assert.isTrue(StringUtils.isNotBlank(type) && StringUtils.isNotBlank(itemLabel), "参数不合法"); + + SysDictItem sysDictItem = getDictItemByItemLabel(type, itemLabel); + + return ObjectUtils.isNotEmpty(sysDictItem) ? sysDictItem.getItemValue() : StringPool.EMPTY; + } + + /** + * 根据字典类型以及字典值获取字典项 + * + * @param type 字典类型 + * @param itemValue 字典数据值 + * @return 字典数据项 + */ + public SysDictItem getDictItemByItemValue(String type, String itemValue) { + Assert.isTrue(StringUtils.isNotBlank(type) && StringUtils.isNotBlank(itemValue), "参数不合法"); + + List dictItemList = getDictItemsByType(type); + + if (CollectionUtils.isNotEmpty(dictItemList)) { + return dictItemList.stream().filter(item -> itemValue.equals(item.getItemValue())).findFirst().orElse(null); + } + + return null; + } + + /** + * 根据字典类型以及字典标签获取字典项 + * + * @param type 字典类型 + * @param itemLabel 字典数据项标签 + * @return 字典数据项 + */ + public SysDictItem getDictItemByItemLabel(String type, String itemLabel) { + Assert.isTrue(StringUtils.isNotBlank(type) && StringUtils.isNotBlank(itemLabel), "参数不合法"); + + List dictItemList = getDictItemsByType(type); + + if (CollectionUtils.isNotEmpty(dictItemList)) { + return dictItemList.stream().filter(item -> itemLabel.equals(item.getLabel())).findFirst().orElse(null); + } + + return null; + } + + +} diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteDictService.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteDictService.java new file mode 100644 index 000000000..bf332ee49 --- /dev/null +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteDictService.java @@ -0,0 +1,27 @@ +package com.pig4cloud.pigx.admin.api.feign; + +import com.pig4cloud.pigx.common.core.constant.ServiceNameConstants; +import com.pig4cloud.pigx.common.core.util.R; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +/** + * @author lengleng + * @date 2020/5/12 + *

+ * 查询参数相关 + */ +@FeignClient(contextId = "remoteDictService", value = ServiceNameConstants.UPMS_SERVICE) +public interface RemoteDictService { + + /** + * 通过字典类型查找字典 + * + * @param type 字典类型 + * @return 同类型字典 + */ + @GetMapping("/dict/type/{type}") + R getDictByType(@PathVariable String type); + +} diff --git a/pigx-upms/pigx-upms-api/src/main/resources/META-INF/spring.factories b/pigx-upms/pigx-upms-api/src/main/resources/META-INF/spring.factories index b1b94cd3d..00df1d113 100755 --- a/pigx-upms/pigx-upms-api/src/main/resources/META-INF/spring.factories +++ b/pigx-upms/pigx-upms-api/src/main/resources/META-INF/spring.factories @@ -6,4 +6,5 @@ com.pig4cloud.pigx.common.feign.PigxFeignAutoConfiguration=\ com.pig4cloud.pigx.admin.api.feign.RemoteParamService,\ com.pig4cloud.pigx.admin.api.feign.RemoteTenantService,\ com.pig4cloud.pigx.admin.api.feign.RemoteTokenService,\ - com.pig4cloud.pigx.admin.api.feign.RemoteUserService + com.pig4cloud.pigx.admin.api.feign.RemoteUserService,\ + com.pig4cloud.pigx.admin.api.feign.RemoteDictService From c7404cd1a08c24e5fbddeade3ba53e5b712123fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E7=BB=AA=E5=A3=AE?= <2235602974@qq.com> Date: Thu, 24 Mar 2022 18:16:37 +0800 Subject: [PATCH 2/2] =?UTF-8?q?:sparkles:=20DictResolver=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E5=AD=97=E5=85=B8=E7=B1=BB=E5=9E=8B=E8=8E=B7=E5=8F=96=E5=AD=97?= =?UTF-8?q?=E5=85=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/data/resolver/DictResolver.java | 22 ++++++------------- .../admin/api/feign/RemoteDictService.java | 6 +++-- .../admin/controller/SysDictController.java | 3 ++- 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/resolver/DictResolver.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/resolver/DictResolver.java index 362aeb04b..fe9c48253 100644 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/resolver/DictResolver.java +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/resolver/DictResolver.java @@ -14,31 +14,27 @@ import java.util.List; /** * @author fxz - * @date 2022/3/24 - * 字典解析器 + * @date 2022/3/24 字典解析器 */ @UtilityClass public class DictResolver { /** * 根据字典类型获取所有字典项 - * * @param type 字典类型 * @return 字典数据项集合 */ - @SuppressWarnings("unchecked") public List getDictItemsByType(String type) { - Assert.isNull(type, "参数不合法"); + Assert.isTrue(StringUtils.isNotBlank(type), "参数不合法"); RemoteDictService remoteDictService = SpringContextHolder.getBean(RemoteDictService.class); - return (List) remoteDictService.getDictByType(type).getData(); + return remoteDictService.getDictByType(type).getData(); } /** * 根据字典类型以及字典项字典值获取字典标签 - * - * @param type 字典类型 + * @param type 字典类型 * @param itemValue 字典项字典值 * @return 字典项标签值 */ @@ -52,8 +48,7 @@ public class DictResolver { /** * 根据字典类型以及字典标签获取字典值 - * - * @param type 字典类型 + * @param type 字典类型 * @param itemLabel 字典数据标签 * @return 字典数据项值 */ @@ -67,8 +62,7 @@ public class DictResolver { /** * 根据字典类型以及字典值获取字典项 - * - * @param type 字典类型 + * @param type 字典类型 * @param itemValue 字典数据值 * @return 字典数据项 */ @@ -86,8 +80,7 @@ public class DictResolver { /** * 根据字典类型以及字典标签获取字典项 - * - * @param type 字典类型 + * @param type 字典类型 * @param itemLabel 字典数据项标签 * @return 字典数据项 */ @@ -103,5 +96,4 @@ public class DictResolver { return null; } - } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteDictService.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteDictService.java index bf332ee49..7dc90542e 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteDictService.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteDictService.java @@ -1,11 +1,14 @@ package com.pig4cloud.pigx.admin.api.feign; +import com.pig4cloud.pigx.admin.api.entity.SysDictItem; import com.pig4cloud.pigx.common.core.constant.ServiceNameConstants; import com.pig4cloud.pigx.common.core.util.R; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import java.util.List; + /** * @author lengleng * @date 2020/5/12 @@ -17,11 +20,10 @@ public interface RemoteDictService { /** * 通过字典类型查找字典 - * * @param type 字典类型 * @return 同类型字典 */ @GetMapping("/dict/type/{type}") - R getDictByType(@PathVariable String type); + R> getDictByType(@PathVariable("type") String type); } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDictController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDictController.java index 0a595e443..ef97d8eaf 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDictController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDictController.java @@ -37,6 +37,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -83,7 +84,7 @@ public class SysDictController { */ @GetMapping("/type/{type}") @Cacheable(value = CacheConstants.DICT_DETAILS, key = "#type", unless = "#result.data.isEmpty()") - public R getDictByType(@PathVariable String type) { + public R> getDictByType(@PathVariable String type) { return R.ok(sysDictItemService.list(Wrappers.query().lambda().eq(SysDictItem::getDictType, type))); }