From fb614b7b54591edb1ab1cc4cc3b1fcd2d6d9262b Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期三, 19 六月 2024 15:27:09 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/DolphinEnglish
---
ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/RegionServiceImpl.java | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 60 insertions(+), 0 deletions(-)
diff --git a/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/RegionServiceImpl.java b/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/RegionServiceImpl.java
index ba857bc..2fe4a05 100644
--- a/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/RegionServiceImpl.java
+++ b/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/RegionServiceImpl.java
@@ -1,14 +1,74 @@
package com.ruoyi.goods.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.constant.RedisConstants;
import com.ruoyi.goods.domain.Region;
import com.ruoyi.goods.mapper.RegionMapper;
import com.ruoyi.goods.service.IRegionService;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
+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;
+import java.util.stream.Collectors;
@Service
public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> implements IRegionService {
+ @Resource
+ private RedisTemplate<Object, Object> redisTemplate;
+
+ @Override
+ public List<Region> addressTree() {
+ // redis缓存
+ Map<Object, Object> regionList = redisTemplate.opsForHash().entries(RedisConstants.ADDRESS_TREE);
+ // 获取所有地区信息 省市区三级
+ List<Region> regions = getReginList(regionList);
+ // 所有地区
+ 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)) {
+ 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 {
+ regions = this.list();
+ }
+ return regions;
+ }
}
--
Gitblit v1.7.1