省市区三级联动查询redis(通过python脚本导入数据)

最近工作有一个工作需求是实现省市区联动,点击省下拉框,选中一个省,然后再选市,最后选区,当然最重要的首先自然是数据了,没数据怎么测试接口,我数据是在 https://hxkj.vip/demo/echartsMap/ 这里拿的,得到一个json文件,里面是一个list的结构,每一条数据都是省市区树级展示。

那么有数据之后,就要导入库中,之所以选用redis而不是mysql,是因为省市区数据是比较固定的,很难会有改动,所以放在redis反而更好

python脚本将json数据导入redis
复制代码
import redis
import json
r = redis.Redis(host='127.0.0.1', port=6379, db=4)
with open("C:\\Users\\10926\Desktop\\pca-code.json", 'r',encoding='utf-8-sig') as file:
    data = json.load(file)
for item in data:
 r.lpush('regionData', json.dumps(item))

只需要改个文件路径名即可

省市区联动下拉框展示

此时redis中的数据是这种格式,通过code来实现父子关联:

那么我们就可以通过code来实现省市区联动:

java 复制代码
	/**
	 *	没传code就是省,有就是市区
     * 分别查询省市区
     * @param regions
     * @param code
     * @return
     */
    public List<RegionVO> getRegionsByCode(List<RegionVO> regions, String code, RegionFlag flag) {
        List<RegionVO> result = new ArrayList<>();
        for (RegionVO region : regions) {
            // 不传code时查询所有省
            if (code == null) {
                result.add(new RegionVO(region.getCode(), region.getName(), null));
            } else if (region.getCode().equals(code)) {
                // 传入省或市的code时
                if (region.getChildren() != null) {
                    for (RegionVO child : region.getChildren()) {
                        result.add(new RegionVO(child.getCode(), child.getName(), null));
                    }
                    flag.setValue(true);
                }
            }
            // 递归查询子区域
            else if (region.getChildren() != null) {
                result.addAll(getRegionsByCode(region.getChildren(), code, flag));
            }
            // 当查到指定数据后,退出循环
            if(flag.getValue()) {
                break;
            }
        }
        return result;
    }

这样,我们就实现了,省市区三级联动,点击省,会展示出所有的省份,选中一个省,就会展示所有的市,选中一个市,就会展示所有的区。

相关推荐
Bonnie_1215几秒前
07-MySQL-事务的隔离级别以及底层原理
数据库·mysql
小张学Python4 分钟前
AI数字人Heygem:口播与唇形同步的福音,无需docker,无需配置环境,一键整合包来了
python·数字人·heygem
ETLCloud数据集成社区5 分钟前
ETLCloud是如何通过Oracle实现CDC的?
数据库·oracle·etl·实时数据同步
跳跳糖炒酸奶9 分钟前
第四章、Isaacsim在GUI中构建机器人(2):组装一个简单的机器人
人工智能·python·算法·ubuntu·机器人
KATA~22 分钟前
解决MyBatis-Plus枚举映射错误:No enum constant问题
java·数据库·mybatis
步木木35 分钟前
Anaconda和Pycharm的区别,以及如何选择两者
ide·python·pycharm
星始流年37 分钟前
解决PyInstaller打包PySide6+QML应用的资源文件问题
python·llm·pyspider
xyliiiiiL38 分钟前
一文总结常见项目排查
java·服务器·数据库
南玖yy39 分钟前
Python网络爬虫:从入门到实践
爬虫·python
shaoing39 分钟前
MySQL 错误 报错:Table ‘performance_schema.session_variables’ Doesn’t Exist
java·开发语言·数据库