1、建立城市数据表
CREATE TABLE `t_city` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
`city_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '城市名称',
`city_code` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '城市编码',
`parent_id` int DEFAULT NULL COMMENT '父级ID',
`is_delete` int DEFAULT '0' COMMENT '是否删除0未删除1已删除',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=429 DEFAULT CHARSET=utf8mb3 COMMENT='城市表';
2、建立产品数据表(根据自己实际表来创建)
3、建立产品和城市关联
CREATE TABLE `t_city_product` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
`city_id` int DEFAULT NULL COMMENT '城市ID',
`product_id` int DEFAULT NULL COMMENT '产品ID',
`is_delete` int DEFAULT '0' COMMENT '是否删除 0未删除 1已删除',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb3 COMMENT='城市产品关联表';
4、查询城市菜单
/**
* 查询城市菜单
* @return
*/
@RequestMapping("findCityDataTree")
@ResponseBody
@ApiOperation(value = "查询城市菜单", notes = "查询城市菜单")
public ResultUtil findCityDataTree() {
try {
List<TCity> cityList=tCityService.findCity();
//封装数据
List<CityManageTree> cityManageTreeList= CityManageTreeUtil.getCityManageTree(cityList);
return ResultUtil.success(cityManageTreeList);
} catch (Exception e) {
return ResultUtil.error("查询失败!");
}
}
5、展示效果(以二叉树的形式展示)
6、使用的封装工具、实体类
package com.yys.szcp.entityVo;
import com.yys.szcp.entity.TCity;
import java.util.ArrayList;
import java.util.List;
/**
* Describe:
* -------------------
* User: yangyongsheng
* Date: 2019/06/26 19:37:37
* Email: 1095737364@qq.com
*/
public class CityManageTreeUtil {
public static List<CityManageTree> getCityManageTree(List<TCity> cityManageList) {
List<CityManageTree> cityManageTreeList = new ArrayList<>();
for (int i = 0; i < cityManageList.size(); i++) {
CityManageTree cityManageTree = new CityManageTree();
TCity city = cityManageList.get(i);
//判断是否存在父级, 如果没有, 则表示是一级菜单
if (city.getParentId() == null || city.getParentId() == 0) {
cityManageTree.setCityCode(city.getCityCode());
cityManageTree.setId(city.getId());
cityManageTree.setCityName(city.getCityName());
// cityManageTree.setTitle(city.getCityName());
// cityManageTree.setExpand(false);
cityManageTree.setParentId(city.getParentId());
cityManageTree.setChildren(getCityManageTreeChild(cityManageList, city.getId()));
cityManageTreeList.add(cityManageTree);
}
}
return cityManageTreeList;
}
private static List<CityManageTree> getCityManageTreeChild(List<TCity> cityManageList, Integer parentId) {
List<CityManageTree> cityTreeManageList = new ArrayList<>();
for (int i = 0; i < cityManageList.size(); i++) {
CityManageTree cityManageTree = new CityManageTree();
TCity city = cityManageList.get(i);
if (city!=null&& city.getParentId()!=null && city.getParentId().equals(parentId)) {
cityManageTree.setCityCode(city.getCityCode());
cityManageTree.setId(city.getId());
cityManageTree.setCityName(city.getCityName());
// cityManageTree.setTitle(city.getCityName());
// cityManageTree.setExpand(false);
cityManageTree.setParentId(city.getParentId());
cityManageTree.setChildren(getCityManageTreeChildThree(cityManageList, city.getId()));
cityTreeManageList.add(cityManageTree);
}
}
return cityTreeManageList;
}
private static List<CityManageTree> getCityManageTreeChildThree(List<TCity> cityManageList, Integer parentId) {
List<CityManageTree> cityTreeManageList = new ArrayList<>();
for (int i = 0; i < cityManageList.size(); i++) {
CityManageTree cityManageTree = new CityManageTree();
TCity city = cityManageList.get(i);
if (city!=null&& city.getParentId()!=null && city.getParentId().equals(parentId)) {
cityManageTree.setCityCode(city.getCityCode());
cityManageTree.setId(city.getId());
cityManageTree.setCityName(city.getCityName());
// cityManageTree.setTitle(city.getCityName());
// cityManageTree.setExpand(false);
cityManageTree.setParentId(city.getParentId());
cityTreeManageList.add(cityManageTree);
}
}
return cityTreeManageList;
}
}
@Data
public class CityManageTree implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private Integer parentId;
private String cityName;
private String cityCode;
private List<CityManageTree> children;
public boolean isExpand() {
return expand;
}
}