From ae796842aea54dd4cd4735c47510dc11093ade9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90li?= <15040126243@163.com> Date: Mon, 6 Feb 2023 12:57:46 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20in=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98=20=E5=BA=94=E4=BD=BF?= =?UTF-8?q?=E7=94=A8list?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/common/core/utils/StringUtils.java | 29 ++++++++++++++++--- .../mybatis/core/mapper/BaseMapperPlus.java | 9 +++++- .../service/impl/SysMenuServiceImpl.java | 10 +++---- 3 files changed, 37 insertions(+), 11 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java index cf19a026a..dea2e6c35 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java @@ -7,10 +7,9 @@ import lombok.AccessLevel; import lombok.NoArgsConstructor; import org.springframework.util.AntPathMatcher; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** * 字符串工具类 @@ -265,4 +264,26 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { return sb.toString(); } + public static List splitTo(String str, Function mapper) { + if (isBlank(str)) { + return List.of(); + } + return StrUtil.split(str, ",") + .stream() + .filter(Objects::nonNull) + .map(mapper) + .collect(Collectors.toList()); + } + + public static List splitTo(String str, String separator, Function mapper) { + if (isBlank(str)) { + return List.of(); + } + return StrUtil.split(str, separator) + .stream() + .filter(Objects::nonNull) + .map(mapper) + .collect(Collectors.toList()); + } + } diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/core/mapper/BaseMapperPlus.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/core/mapper/BaseMapperPlus.java index ee1bc5822..68a3509a8 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/core/mapper/BaseMapperPlus.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/core/mapper/BaseMapperPlus.java @@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.*; +import com.baomidou.mybatisplus.core.toolkit.ReflectionKit; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.toolkit.Db; import com.ruoyi.common.core.utils.BeanCopyUtils; @@ -17,6 +17,9 @@ import java.io.Serializable; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.function.Function; +import java.util.stream.Collectors; /** * 自定义 Mapper 接口, 实现 自定义扩展 @@ -193,4 +196,8 @@ public interface BaseMapperPlus extends BaseMapper { return (P) voPage; } + default List selectObjs(Wrapper wrapper, Function mapper) { + return this.selectObjs(wrapper).stream().filter(Objects::nonNull).map(mapper).collect(Collectors.toList()); + } + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java index 4e5671652..e519d55f1 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java @@ -162,21 +162,19 @@ public class SysMenuServiceImpl implements ISysMenuService { @Override public List selectMenuListByPackageId(Long packageId) { SysTenantPackage tenantPackage = sysTenantPackageMapper.selectById(packageId); - String menuIds = tenantPackage.getMenuIds(); - if (StringUtils.isBlank(menuIds)) { + List menuIds = StringUtils.splitTo(tenantPackage.getMenuIds(), Convert::toLong); + if (CollUtil.isEmpty(menuIds)) { return List.of(); } List parentIds = null; if (tenantPackage.getMenuCheckStrictly()) { parentIds = baseMapper.selectObjs(new LambdaQueryWrapper() .select(SysMenu::getParentId) - .in(SysMenu::getMenuId, menuIds)) - .stream().distinct().map(Convert::toLong).toList(); + .in(SysMenu::getMenuId, menuIds), Convert::toLong); } return baseMapper.selectObjs(new LambdaQueryWrapper() .in(SysMenu::getMenuId, menuIds) - .notIn(CollUtil.isNotEmpty(parentIds), SysMenu::getMenuId, parentIds)) - .stream().map(Convert::toLong).toList(); + .notIn(CollUtil.isNotEmpty(parentIds), SysMenu::getMenuId, parentIds), Convert::toLong); } /**