package com.ishop.merchant.util; import com.ishop.model.po.EbCityRegion; import com.ishop.model.vo.CityTreeVo; import com.ishop.model.vo.CityVo; import com.walker.cache.Cache; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; public class CityUtils { public static final void buildTree(List cityTreeVoList, List data, Cache cache){ CityTreeVo cityTreeVo = null; int regionType = 0; Map tempMap = new HashMap<>(data.size()); for(EbCityRegion cityRegion : data){ // 每条数据线加入到缓存 cityTreeVo = CityUtils.transferTo(cityRegion); cache.put(String.valueOf(cityRegion.getRegionId()), cityTreeVo); tempMap.put(cityRegion.getRegionId(), cityTreeVo); cityTreeVoList.add(cityTreeVo); } for(Iterator it = cityTreeVoList.iterator(); it.hasNext();){ cityTreeVo = it.next(); regionType = cityTreeVo.getRegionType().intValue(); // 第一级节点:省份 if(regionType == CityVo.TYPE_PROVINCE){ continue; } // 第二级节点:城市 if(regionType == CityVo.TYPE_CITY){ tempMap.get(cityTreeVo.getParentId()).addChild(cityTreeVo); it.remove(); continue; } // 第三级节点:区县 if(regionType == CityVo.TYPE_DISTRICT){ tempMap.get(cityTreeVo.getParentId()).addChild(cityTreeVo); it.remove(); continue; } // 第四级节点:街道 if(regionType == CityVo.TYPE_STREET){ tempMap.get(cityTreeVo.getParentId()).addChild(cityTreeVo); it.remove(); continue; } } tempMap.clear(); } public static final CityTreeVo transferTo(EbCityRegion cityRegion){ CityTreeVo vo = new CityTreeVo(); vo.setRegionId(cityRegion.getRegionId()); vo.setParentId(cityRegion.getParentId()); vo.setRegionName(cityRegion.getRegionName()); vo.setRegionType(cityRegion.getRegionType()); int regionType = cityRegion.getRegionType().intValue(); if(regionType == CityVo.TYPE_PROVINCE || regionType == CityVo.TYPE_CITY){ vo.setIsChild(true); } return vo; } }