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 |   34 +++++++++++++++++++++++++++++++++-
 1 files changed, 33 insertions(+), 1 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 bfe3bd6..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
@@ -61,12 +61,44 @@
         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(List<String> cityCodeList) {
         List<Region> regions;
-        if (cityCodeList==null) {
+        if (cityCodeList==null||cityCodeList.isEmpty()) {
             regions = this.list();
         } else {
             regions = this.lambdaQuery()

--
Gitblit v1.7.1