package com.xiaopeng.operation.service.impl;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.xiaopeng.common.core.constant.CacheConstants;
|
import com.xiaopeng.common.redis.service.RedisService;
|
import com.xiaopeng.operation.mapper.XpRegionMapper;
|
import com.xiaopeng.api.model.operation.XpRegion;
|
import com.xiaopeng.operation.service.XpRegionService;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 省市区三级联动 服务实现类
|
* </p>
|
*
|
* @author liu
|
* @since 2026-02-03
|
*/
|
@Service
|
public class XpRegionServiceImpl extends ServiceImpl<XpRegionMapper, XpRegion> implements XpRegionService {
|
|
@Resource
|
private RedisService redisService;
|
|
@Override
|
public List<List<XpRegion>> getXpRegion() {
|
|
// 缓存数据
|
List<Object> cacheList = redisService.getCacheList(CacheConstants.XP_REGION);
|
if (cacheList != null && !cacheList.isEmpty()) {
|
try {
|
return cacheList.stream()
|
.filter(obj -> obj instanceof List)
|
.map(obj -> {
|
List<?> list = (List<?>) obj;
|
return list.stream()
|
.filter(item -> item instanceof XpRegion)
|
.map(item -> (XpRegion) item)
|
.collect(Collectors.toList());
|
})
|
.collect(Collectors.toList());
|
} catch (ClassCastException e) {
|
// 缓存数据结构异常,重新加载
|
redisService.deleteObject(CacheConstants.XP_REGION);
|
}
|
}
|
String[] initials = {"A", "B", "C", "D", "E", "F",
|
"G", "H", "I", "J", "K", "L",
|
"M", "N", "O", "P", "Q", "R",
|
"S", "T", "U", "V", "W", "X", "Y", "Z"};
|
List<XpRegion> tRegions = this.baseMapper.selectList(Wrappers.lambdaQuery(XpRegion.class));
|
List<List<XpRegion>> result = new ArrayList<>();
|
for (String initial : initials) {
|
List<XpRegion> init = tRegions.stream().filter(e -> e.getInitial().equals(initial) && !e.getCode().contains("0000")).collect(Collectors.toList());
|
result.add(init);
|
}
|
redisService.setCacheList(CacheConstants.XP_REGION, result);
|
return result;
|
}
|
}
|