效果图如下:
sql文件下载:https://pan.baidu.com/s/1dGKczrb
java代码实现:
/**
*
* @Description (处理返回结果)
*/
private void dealResultData(){
List<City> allCities = City.find("FROM City ORDER BY parent_id ASC").fetch();
//获取所有一级省份
List<City> provinces = treeMenuList(allCities, 2);
//java.util.Collections.sort(provinces);
//所有城市
List<City> cities = treeMenuList(allCities, 3);
// java.util.Collections.sort(cities);
//所有地区
List<City> regions = treeMenuList(allCities, 4);
//java.util.Collections.sort(regions);
//获取省份下的所有城市
Map<String, List<CityVo>> allNextCities = getAllChild(provinces,cities);
//获取城市下面的所有地区
Map<String, List<CityVo>> allRegions = getAllChild(cities,regions);
Map<String,Object> resultMap=new HashMap<String, Object>();
//provs_data, citys_data, dists_data
List<CityVo> cityVos = new ArrayList<CityVo>();
for (City province:provinces) {
CityVo cityVo = new CityVo();
cityVo.text = province.region_name;
cityVo.value = province.region_code;
cityVos.add(cityVo);
}
resultMap.put("provs_data", cityVos);
resultMap.put("citys_data", allNextCities);
resultMap.put("dists_data", allRegions);
resultMap.put("status", "0000");
resultMap.put("message", "查询成功");
RedisUtil.set(RedisDBApp.CommonCache,"allCitiesResult".getBytes(), resultMap);
}
/**
* @Description (获取对应等级城市)
* @param cities
* @param level
* @return
*/
private final List<City> treeMenuList(List<City> cities, int level) {
List<City> childs = new ArrayList<City>();
for (City city : cities) {
if (city.region_level == level) {
childs.add(city);
}
}
return childs;
}
/**
*
* @Description (获取所有子类)
* @param parents
* @param childs
* @return
*/
private final Map<String, List<CityVo>> getAllChild(List<City> parents, List<City> childs) {
Map<String, List<CityVo>> cityMap = new HashMap<String, List<CityVo>>();
for (City parent : parents) {
List<CityVo> cityVos = new ArrayList<CityVo>();
for (City child : childs) {
if (parent.region_id.equals(child.parent_id)) {
CityVo cityVo = new CityVo();
cityVo.text = child.region_name;
cityVo.value = child.region_code;
cityVos.add(cityVo);
}
}
cityMap.put(parent.region_code, cityVos);
}
return cityMap;
}
js文件下载:https://pan.baidu.com/s/1qZLbUqS
h5网页中使用:
ajax请求接口初始化页面控件数据代码如下:
area=new LArea();
area.init({
'trigger': '#demo',
'valueTo': '#value',
'keys': {
id: 'value',
name: 'text'
},
'type': 2,
'data': [provs_data, citys_data, dists_data]
});
}
$.ajax({
type: "get",
url:HOST_SERVICE_URL +"/common/web/1.0/getAllCites",
async: false,
dataType:'json',
success: function(data) {
if(data.status=='0000'){
data=data.data;
provs_data=data.provs_data;
citys_data=data.citys_data;
dists_data=data.dists_data;
initArea(provs_data,citys_data,dists_data);
}else{
}
},
error:function(){
console.log('aa')
}
});