From ecca9ab70a9a87bcb60977c92fbf81053b8fc1bb Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期三, 04 九月 2024 09:17:55 +0800 Subject: [PATCH] 新增优化 --- ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/RegionServiceImpl.java | 53 ++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 40 insertions(+), 13 deletions(-) diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/RegionServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/RegionServiceImpl.java index 350303c..5223b80 100644 --- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/RegionServiceImpl.java +++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/RegionServiceImpl.java @@ -10,7 +10,6 @@ import javax.annotation.Resource; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -31,11 +30,9 @@ private RedisTemplate<Object, Object> redisTemplate; @Override - public List<Region> addressTree() { - // redis缓存 - Map<Object, Object> regionList = redisTemplate.opsForHash().entries(RedisConstants.ADDRESS_TREE); + public List<Region> addressTree(List<String> cityCodeList) { // 获取所有地区信息 省市区三级 - List<Region> regions = getReginList(regionList); + List<Region> regions = getReginList(cityCodeList); // 所有地区 Map<String, Region> courseTypeMap = regions.stream(). collect(Collectors.toMap(region -> region.getId().toString() @@ -64,18 +61,48 @@ return treeData; } + @Override + public List<Region> addressTree1(List<String> cityCodeList) { + // 获取所有地区信息 省市区三级 + List<Region> regions = getReginList(cityCodeList); + // 所有地区 + Map<String, Region> courseTypeMap = regions.stream(). + collect(Collectors.toMap(region -> region.getId().toString() + , region -> region)); + redisTemplate.opsForHash().putAll(RedisConstants.ADDRESS_TREE, courseTypeMap); + redisTemplate.expire(RedisConstants.ADDRESS_TREE, 30, TimeUnit.MINUTES); + // 生成map集合 + Map<Integer, Region> map = regions.stream().collect(Collectors.toMap(Region::getId, region -> region)); + // 存放无限级树 + List<Region> treeData = new ArrayList<>(); + // 遍历地区集合 + regions.forEach(e -> { + if (e.getParentId() == null || e.getParentId().equals(0)||!cityCodeList.isEmpty()) { + treeData.add(e); + } else { + Region region = map.get(e.getParentId()); + region.getChildren().add(e); + } + }); + for (Region region : treeData) { + List<Region> children = region.getChildren(); + for (Region child : children) { + child.setChildren(new ArrayList<>()); + } + } + return treeData; + } + /** * 获取redis数据进行封装 */ - private List<Region> getReginList(Map<Object, Object> regionMap) { - List<Region> regions = new ArrayList<>(); - if (!regionMap.isEmpty()) { - Collection<Object> values = regionMap.values(); - for (Object value : values) { - regions.add((Region) value); - } - } else { + private List<Region> getReginList(List<String> cityCodeList) { + List<Region> regions; + if (cityCodeList==null||cityCodeList.isEmpty()) { regions = this.list(); + } else { + regions = this.lambdaQuery() + .in(Region::getCode, cityCodeList).list(); } return regions; } -- Gitblit v1.7.1