From 0ea15d35a6f594f872be40535f0ac3c274130aeb Mon Sep 17 00:00:00 2001 From: hzhan <2016271115@qq.com> Date: Mon, 6 Apr 2020 12:36:44 +0800 Subject: [PATCH 1/2] ## pull pr, update UmsPermissionServiceImpl tree build --- .../impl/UmsPermissionServiceImpl.java | 49 ++++++++++++++++--- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/mall-admin/src/main/java/com/macro/mall/service/impl/UmsPermissionServiceImpl.java b/mall-admin/src/main/java/com/macro/mall/service/impl/UmsPermissionServiceImpl.java index e0383319..98ddc9d3 100644 --- a/mall-admin/src/main/java/com/macro/mall/service/impl/UmsPermissionServiceImpl.java +++ b/mall-admin/src/main/java/com/macro/mall/service/impl/UmsPermissionServiceImpl.java @@ -5,12 +5,15 @@ import com.macro.mall.mapper.UmsPermissionMapper; import com.macro.mall.model.UmsPermission; import com.macro.mall.model.UmsPermissionExample; import com.macro.mall.service.UmsPermissionService; +import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -46,10 +49,11 @@ public class UmsPermissionServiceImpl implements UmsPermissionService { @Override public List treeList() { List permissionList = permissionMapper.selectByExample(new UmsPermissionExample()); - List result = permissionList.stream() - .filter(permission -> permission.getPid().equals(0L)) - .map(permission -> covert(permission,permissionList)).collect(Collectors.toList()); - return result; + if (CollectionUtils.isNotEmpty(permissionList)) { + Map> umsPermissionMap = permissionList.stream().collect(Collectors.groupingBy(UmsPermission::getPid)); + return recursiveConvertToTree(0L, umsPermissionMap); + } + return new ArrayList<>(1); } @Override @@ -61,13 +65,44 @@ public class UmsPermissionServiceImpl implements UmsPermissionService { * 将权限转换为带有子级的权限对象 * 当找不到子级权限的时候map操作不会再递归调用covert */ - private UmsPermissionNode covert(UmsPermission permission,List permissionList){ + private UmsPermissionNode covert(UmsPermission permission, List permissionList) { UmsPermissionNode node = new UmsPermissionNode(); - BeanUtils.copyProperties(permission,node); + BeanUtils.copyProperties(permission, node); List children = permissionList.stream() .filter(subPermission -> subPermission.getPid().equals(permission.getId())) - .map(subPermission -> covert(subPermission,permissionList)).collect(Collectors.toList()); + .map(subPermission -> covert(subPermission, permissionList)).collect(Collectors.toList()); node.setChildren(children); return node; } + + /** + * 递归 + * + * @param pid + * @param umsPermissionMap + * @return + */ + private List recursiveConvertToTree(long pid, Map> umsPermissionMap) { + List umsPermissionNodes = new ArrayList<>(); + List umsPermissions = umsPermissionMap.get(pid); + if (CollectionUtils.isNotEmpty(umsPermissionNodes)) { + for (UmsPermission umsPermission : umsPermissions) { + UmsPermissionNode umsPermissionNode = new UmsPermissionNode(); + // BeanUtils 性能过慢 ,可以考虑引入 ModelMapper ??? + /** + * @Resource + * private ModelMapper modelMapper; + * + * // copy properties + * UmsPermissionNode umsPermissionNode = modelMapper.map(umsPermission,UmsPermissionNode.class); + * + */ + BeanUtils.copyProperties(umsPermission, umsPermissionNode); + umsPermissionNode.setChildren(recursiveConvertToTree(umsPermission.getPid(), umsPermissionMap)); + umsPermissionNodes.add(umsPermissionNode); + } + } + return umsPermissionNodes; + } + } -- Gitee From 5858bb973217a4853ceec13d18795022ea889bf2 Mon Sep 17 00:00:00 2001 From: hzhan <2016271115@qq.com> Date: Mon, 6 Apr 2020 12:43:29 +0800 Subject: [PATCH 2/2] ## pull pr, update UmsPermissionServiceImpl tree build --- .../impl/UmsPermissionServiceImpl.java | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/mall-admin/src/main/java/com/macro/mall/service/impl/UmsPermissionServiceImpl.java b/mall-admin/src/main/java/com/macro/mall/service/impl/UmsPermissionServiceImpl.java index 98ddc9d3..96b1717a 100644 --- a/mall-admin/src/main/java/com/macro/mall/service/impl/UmsPermissionServiceImpl.java +++ b/mall-admin/src/main/java/com/macro/mall/service/impl/UmsPermissionServiceImpl.java @@ -76,33 +76,34 @@ public class UmsPermissionServiceImpl implements UmsPermissionService { } /** - * 递归 + * 递归构建树 + * * - * @param pid - * @param umsPermissionMap - * @return + * BeanUtils 性能过慢 ,可以考虑引入 ModelMapper ??? + * + * @Resource + * private ModelMapper modelMapper; + * + * // copy properties + * UmsPermissionNode umsPermissionNode = modelMapper.map(umsPermission,UmsPermissionNode.class); + * + * + * + * @param pid pid + * @param umsPermissionMap 根据pid 分组好的map + * @return 树 */ private List recursiveConvertToTree(long pid, Map> umsPermissionMap) { - List umsPermissionNodes = new ArrayList<>(); List umsPermissions = umsPermissionMap.get(pid); - if (CollectionUtils.isNotEmpty(umsPermissionNodes)) { - for (UmsPermission umsPermission : umsPermissions) { + if (CollectionUtils.isNotEmpty(umsPermissions)) { + return umsPermissions.stream().map(umsPermission -> { UmsPermissionNode umsPermissionNode = new UmsPermissionNode(); - // BeanUtils 性能过慢 ,可以考虑引入 ModelMapper ??? - /** - * @Resource - * private ModelMapper modelMapper; - * - * // copy properties - * UmsPermissionNode umsPermissionNode = modelMapper.map(umsPermission,UmsPermissionNode.class); - * - */ BeanUtils.copyProperties(umsPermission, umsPermissionNode); umsPermissionNode.setChildren(recursiveConvertToTree(umsPermission.getPid(), umsPermissionMap)); - umsPermissionNodes.add(umsPermissionNode); - } + return umsPermissionNode; + }).collect(Collectors.toList()); } - return umsPermissionNodes; + return new ArrayList<>(1); } } -- Gitee