省,市,区 三级查询 树形结构,代码优化

省,市,区 三级查询 代码优化

思路:通过省份的code,分别获取该省份code下的集合。然后轮训加入对应的子节点

    // 查询省、市、县
    @RequestMapping("/getAlllevel")
    public ResultInfo getAlllevel(@RequestBody JSONObject json) {
        try {
            // 省
            List<PerArea> provinceList = perAreaService.getProvince(json.getString("provinceCode"));
            List<PerArea> cityList = perAreaService.getCityByProvinceCode(json.getString("provinceCode"));
            List<PerArea> districtList = perAreaService.getDistrictByProvinceCode(json.getString("provinceCode"));

            JSONArray jsonP = JSONArray.parseArray(JSON.toJSONString(provinceList));
            JSONArray jsonC = JSONArray.parseArray(JSON.toJSONString(cityList));
            JSONArray jsonD = JSONArray.parseArray(JSON.toJSONString(districtList));

            for (int i = 0; i < jsonP.size(); i++) {
                JSONObject province = jsonP.getJSONObject(i);

                JSONArray children = new JSONArray();
                for (int j = 0; j < jsonC.size(); j++) {
                    JSONObject city = jsonC.getJSONObject(j);
                    if (StringUtils.isNotEmpty(province.getString("provinceCode")) && StringUtils.isNotEmpty(city.getString("provinceCode"))
                            && province.getString("provinceCode").equals(city.getString("provinceCode"))) {
                        children.add(city);
                    }
                    JSONArray children2 = new JSONArray();
                    for (int k = 0; k < jsonD.size(); k++) {
                        JSONObject district = jsonD.getJSONObject(k);
                        if (StringUtils.isNotEmpty(city.getString("cityCode")) && StringUtils.isNotEmpty(district.getString("cityCode"))
                                && city.getString("cityCode").equals(district.getString("cityCode"))) {
                            children2.add(district);
                        }
                    }
                    if (children2.size() > 0) {
                        city.put("children", children2);// 加入子节点
                    }
                }
                if (children.size() > 0) {
                    province.put("children", children);// 加入子节点
                }

            }
            return ResultInfo.success(jsonP);
        } catch (Exception e) {
            logger.info(e.getMessage());
            e.printStackTrace();
        }
        return ResultInfo.error(MsgEnum.FAIL.getCode(), MsgEnum.FAIL.getMsg());
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值