From a6d4e647711dc2131cd7477d4e817cd7c4509eed Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 14 三月 2026 15:23:38 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRegionServiceImpl.java | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 55 insertions(+), 0 deletions(-)
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRegionServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRegionServiceImpl.java
index 62a5857..8e2ef7b 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRegionServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRegionServiceImpl.java
@@ -120,6 +120,61 @@
redisService.setCacheList(CacheConstants.XP_REGION_CASCADER, result);
return result;
}
+ @Override
+ public List<RegionCascaderVO> getRegionCascaderNoArea() {
+ List<Object> cacheList = redisService.getCacheList(CacheConstants.XP_REGION_CASCADER);
+ if (cacheList != null && !cacheList.isEmpty()) {
+ try {
+ List<RegionCascaderVO> collect = cacheList.stream()
+ .filter(item -> item instanceof RegionCascaderVO)
+ .map(item -> (RegionCascaderVO) item)
+ .collect(Collectors.toList());
+ for (RegionCascaderVO regionCascaderVO : collect) {
+ List<RegionCascaderVO> children = regionCascaderVO.getChildren();
+ for (RegionCascaderVO children1 : children) {
+ children1.setChildren(null);
+ }
+ }
+ return collect;
+ } catch (ClassCastException e) {
+ redisService.deleteObject(CacheConstants.XP_REGION_CASCADER);
+ }
+ }
+
+ List<XpRegion> regionList = this.baseMapper.selectList(Wrappers.lambdaQuery(XpRegion.class));
+ if (regionList == null || regionList.isEmpty()) {
+ return Collections.emptyList();
+ }
+
+ List<XpOpenCity> openCityList = openCityService.list(Wrappers.lambdaQuery(XpOpenCity.class)
+ .eq(XpOpenCity::getStatus, 1));
+ Set<String> openCityCodeSet = openCityList.stream()
+ .map(XpOpenCity::getCityCode)
+ .filter(StringUtils::isNotBlank)
+ .collect(Collectors.toCollection(HashSet::new));
+ Set<String> openDistrictCodeSet = openCityList.stream()
+ .map(XpOpenCity::getDistrictCode)
+ .filter(StringUtils::isNotBlank)
+ .collect(Collectors.toCollection(HashSet::new));
+
+ Map<Long, List<XpRegion>> childrenMap = regionList.stream()
+ .collect(Collectors.groupingBy(region -> region.getParentId() == null ? 0L : region.getParentId()));
+ List<XpRegion> provinceList = childrenMap.getOrDefault(0L, Collections.emptyList()).stream()
+ .sorted(REGION_COMPARATOR)
+ .collect(Collectors.toList());
+ List<RegionCascaderVO> result = provinceList.stream()
+ .map(region -> buildRegionNode(region, childrenMap, openCityCodeSet, openDistrictCodeSet))
+ .collect(Collectors.toList());
+ for (RegionCascaderVO regionCascaderVO : result) {
+ List<RegionCascaderVO> children = regionCascaderVO.getChildren();
+ for (RegionCascaderVO children1 : children) {
+ children1.setChildren(null);
+ }
+ }
+
+ redisService.setCacheList(CacheConstants.XP_REGION_CASCADER, result);
+ return result;
+ }
private RegionCascaderVO buildRegionNode(XpRegion current,
Map<Long, List<XpRegion>> childrenMap,
--
Gitblit v1.7.1