地区 & IP 库

地区 & IP 库

yudao-spring-boot-starter-biz-ip (opens new window)业务组件,提供地区 & IP 库的封装。

#1. 地区

AreaUtils (opens new window)是地区工具类,可以查询中国的省、市、区县,也可以查询国外的国家。

它的数据来自 Administrative-divisions-of-China (opens new window)项目,最终整理到项目的 area.csv (opens new window)文件。每一行的数据,对应 Area (opens new window)对象。代码所示:

复制代码
public class Area {

    /**
     * 编号
     */
    private Integer id;
    /**
     * 名字
     */
    private String name;
    /**
     * 类型
     *
     * 枚举 {@link AreaTypeEnum}
     * 1 - 国家
     * 2 - 省份
     * 3 - 城市
     * 4 - 地区, 例如说县、镇、区等
     */
    private Integer type;

    /**
     * 父节点
     */
    private Area parent;
    /**
     * 子节点
     */
    private List<Area> 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) {
    // ... 省略具体实现
}

另外,管理后台提供了 系统管理 -\> 地区管理 菜单,可以按照树形结构查看地区列表。如下图所示:

#2. IP

IPUtils (opens new window)是 IP 工具类,可以查询 IP 对应的城市信息。

它的数据来自 ip2region (opens new window)项目,最终整理到项目的 ip2region.xdb (opens new window)文件。

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) {
        // ... 省略具体实现
}

另外,管理后台提供了 系统管理 -\> 地区管理 菜单,也提供了 IP 查询城市的示例。如下图所示:

相关推荐
听说6662 小时前
信息安全工程师 - 第二十章 据库系统安全
网络·安全·web安全·网络安全·系统安全
严谨的麻辣烫2 小时前
为什么 API 接口偶尔报错,重试一次又恢复了?从 HTTP 连接池到 Keep-Alive 排查
python·网络协议·tcp/ip·http·性能优化
updayday8542 小时前
供应商补交资质文件时,采购难以核对缺件和新版本 - Ping64 文件收集
大数据·网络·数据库·安全·智能路由器
IpdataCloud2 小时前
高精度IP定位服务怎么评估?从数据源、精度层级到实测验证的完整框架
服务器·网络·tcp/ip·ip
迪康coolmu2 小时前
迪康Defender网络准入控制系统落地实战:部署、配置与问题排查记录
运维·开发语言·网络·经验分享·php
韩曙亮2 小时前
【错误记录】网络配置问题处理 ( 获取服务器的 出口 和 入口 IP | 定位网络变化 )
服务器·网络·tcp/ip
易点云徐源2 小时前
Microsoft Teams 桌面端黑屏与登录异常排查:账户会话和网络路径的影响
网络·microsoft
lisw052 小时前
环境智能(ambient intelligence)概述!
网络·人工智能·计算机视觉
墨云安全3 小时前
AI 渗透测试是怎么实现的?2026 年大模型驱动测试用例生成的工程拆解
网络·人工智能·网络安全·渗透测试·测试用例
阿文和她的Key3 小时前
私有化 AI 基座的三层分工:环境层、管控层、网关层各自解决什么
网络·人工智能