Appearance
地区 & IP 库
yudao-spring-boot-starter-biz-ip 业务组件,提供地区 & IP 库的封装。
# 1. 地区
AreaUtils 是地区工具类,可以查询中国的省、市、区县,也可以查询国外的国家。 数据来源: 原数据来自 Administrative-divisions-of-China 项目;由于该项目已停止更新(数据停留在 2023 年版本),现已切换为兼容 AreaCity-JsSpider-StatsGov 的 csv 数据:
- 当前版本:
2025.251231.260403(2026-04-03 发布) - 整合数据源:国家地名信息库 2025-12-31、腾讯地图行政区划 2025-11-19、高德地图行政区划(采集当天)
- csv 转换脚本:yudao-cloud#247 它的数据最终整理到项目的 area.csv 文件。每一行的数据,对应 Area 对象。代码所示: public class Area { /**
- 编号 / private Integer id; /*
- 名字 / private String name; /*
- 类型
- 枚举
- 1 - 国家
- 2 - 省份
- 3 - 城市
- 4 - 地区, 例如说县、镇、区等 / private Integer type; /*
- 父节点 / private Area parent; /*
- 子节点 / private List children; } AreaUtils 主要有如下两个方法: // AreaUtils.java /*
- 获得指定编号对应的区域
- @param id 区域编号
- @return 区域 / public static Area getArea(Integer id) { // ... 省略具体实现 } /*
- 格式化区域
- 例如说:
1. id = “静安区”时:上海 上海市 静安区2. id = “上海市”时:上海 上海市3. id = “上海”时:上海4. id = “美国”时:美国- 当区域在中国时,默认不显示中国
- @param id 区域编号
- @param separator 分隔符
- @return 格式化后的区域 */ public static String format(Integer id, String separator) { // ... 省略具体实现 }
- 具体的使用,可见 AreaUtilsTest 测试类。 另外,管理后台提供了 [系统管理 -> 地区管理] 菜单,可以按照树形结构查看地区列表。如下图所示:

- 后端代码,对应 AreaController 的
/admin-api/system/area/tree接口 - 前端代码,对应 system/area/index.vue 界面
# 2. IP
IPUtils 是 IP 工具类,可以查询 IP 对应的城市信息。 它的数据来自 ip2region 项目,最终整理到项目的 ip2region.xdb 文件。 IPUtils 主要有如下两个方法: // IPUtils.java /**
- 查询 IP 对应的地区编号
- @param ip IP 地址,格式为 127.0.0.1
- @return 地区id / public static Integer getAreaId(String ip) { // ... 省略具体实现 } /*
- 查询 IP 对应的地区
- @param ip IP 地址,格式为 127.0.0.1
- @return 地区 */ public static Area getArea(String ip) { // ... 省略具体实现 }
- 具体的使用,可见 IPUtilsTest 测试类。 另外,管理后台提供了 [系统管理 -> 地区管理] 菜单,也提供了 IP 查询城市的示例。如下图所示:

- 后端代码,对应 AreaController 的
/admin-api/system/area/get-by-ip接口 .pageB img{width:80px!important;} .wwads-horizontal .wwads-text, .wwads-content .wwads-text{line-height:1;} 敏感词 开发环境 ← 敏感词 开发环境→ Theme by Vdoing | Copyright © 2019-2026 芋道源码 | MIT License - 跟随系统
- 浅色模式
- 深色模式
- 阅读模式 × .windowRB{ padding: 0;} .windowRB .wwads-img{margin-top: 10px;} .windowRB .wwads-content{margin: 0 10px 10px 10px;} .custom-html-window-rb .close-but{ display: none; }