58同城成都網(wǎng)站建設(shè)搜狗收錄提交
地區(qū) & IP 庫
yudao-spring-boot-starter-biz-ip?(opens new window)業(yè)務(wù)組件,提供地區(qū) & IP 庫的封裝。
#1. 地區(qū)
AreaUtils?(opens new window)是地區(qū)工具類,可以查詢中國的省、市、區(qū)縣,也可以查詢國外的國家。
它的數(shù)據(jù)來自?Administrative-divisions-of-China?(opens new window)項目,最終整理到項目的?area.csv?(opens new window)文件。每一行的數(shù)據(jù),對應(yīng)?Area?(opens new window)對象。代碼所示:
public class Area {/*** 編號*/private Integer id;/*** 名字*/private String name;/*** 類型** 枚舉 {@link AreaTypeEnum}* 1 - 國家* 2 - 省份* 3 - 城市* 4 - 地區(qū), 例如說縣、鎮(zhèn)、區(qū)等*/private Integer type;/*** 父節(jié)點*/private Area parent;/*** 子節(jié)點*/private List<Area> children;}
AreaUtils 主要有如下兩個方法:
// AreaUtils.java/*** 獲得指定編號對應(yīng)的區(qū)域** @param id 區(qū)域編號* @return 區(qū)域*/
public static Area getArea(Integer id) {// ... 省略具體實現(xiàn)
}/*** 格式化區(qū)域** 例如說:* 1. id = “靜安區(qū)”時:上海 上海市 靜安區(qū)* 2. id = “上海市”時:上海 上海市* 3. id = “上?!睍r:上海* 4. id = “美國”時:美國* 當(dāng)區(qū)域在中國時,默認不顯示中國** @param id 區(qū)域編號* @param separator 分隔符* @return 格式化后的區(qū)域*/
public static String format(Integer id, String separator) {// ... 省略具體實現(xiàn)
}
- 具體的使用,可見?AreaUtilsTest?(opens new window)測試類。
另外,管理后臺提供了 [系統(tǒng)管理 -> 地區(qū)管理] 菜單,可以按照樹形結(jié)構(gòu)查看地區(qū)列表。如下圖所示:
- 后端代碼,對應(yīng)?AreaController?(opens new window)的?
/admin-api/system/area/tree
?接口 - 前端代碼,對應(yīng)?system/area/index.vue?(opens new window)界面
#2. IP
IPUtils?(opens new window)是 IP 工具類,可以查詢 IP 對應(yīng)的城市信息。
它的數(shù)據(jù)來自?ip2region?(opens new window)項目,最終整理到項目的?ip2region.xdb?(opens new window)文件。
IPUtils 主要有如下兩個方法:
// IPUtils.java
/*** 查詢 IP 對應(yīng)的地區(qū)編號** @param ip IP 地址,格式為 127.0.0.1* @return 地區(qū)id*/
public static Integer getAreaId(String ip) {// ... 省略具體實現(xiàn)
}/*** 查詢 IP 對應(yīng)的地區(qū)** @param ip IP 地址,格式為 127.0.0.1* @return 地區(qū)*/
public static Area getArea(String ip) {// ... 省略具體實現(xiàn)
}
- 具體的使用,可見?IPUtilsTest?(opens new window)測試類。
另外,管理后臺提供了 [系統(tǒng)管理 -> 地區(qū)管理] 菜單,也提供了 IP 查詢城市的示例。如下圖所示:
- 后端代碼,對應(yīng)?AreaController?(opens new window)的?
/admin-api/system/area/get-by-ip
?接口