// Package area ----------------------------- // @file : areaService.go // @author : JJXu // @contact : wavingbear@163.com // @time : 2024/7/17 下午4:37 // ------------------------------------------- package area import ( "encoding/json" ) // 国家、省、市、区数据树,包含银行信息 var chinaAreaTree []AreaTree type AreaInfo struct { //bankQuery.Data //区域信息 Id int `json:"id"` //id Pid int `json:"pid"` //父级id Name string `json:"name"` //地区名称 Level int `json:"level"` //层级 AreaCode string `json:"area_code"` //区域代码 TownCode string `json:"town_code"` //乡镇代码 CountryId int `json:"country_id"` //国家id } type AreaTree struct { AreaInfo Children []AreaTree } // 获取地区列表,包含国家、省、市、区 func GetAreaList() (data []AreaInfo, err error) { err = json.Unmarshal([]byte(areaList), &data) return } // 获取中国的省市区列表 func GetChinaAreaTree() (data []AreaTree, err error) { if chinaAreaTree != nil { return chinaAreaTree[0].Children, nil } chinaAreaTree, err = GetAreaTree() if err != nil { return } return data[0].Children, nil } // 层级 1-国家 2-省 3-市 4-区 func GetAreaTree() (data []AreaTree, err error) { var listData []AreaInfo err = json.Unmarshal([]byte(areaList), &listData) if err != nil { return } for _, v := range listData { if v.Pid == 0 { v := v var newArea = AreaTree{ AreaInfo: v, } newArea.Children = buildChildrenTree(listData, newArea.Id, newArea.Name) data = append(data, newArea) break } } return } func buildChildrenTree(data []AreaInfo, pid int, pName string) (children []AreaTree) { for _, v := range data { if v.Pid == pid { v := v var newArea = AreaTree{ AreaInfo: v, } //市辖区的名称改为省份名称 if newArea.Name == "市辖区" { newArea.Name = pName } newArea.Children = buildChildrenTree(data, newArea.Id, newArea.Name) children = append(children, newArea) } } return }