收货地址智能解析
- 省市区县文件下载地址:china-area.json
- TreeUtils 地址:Java 万物皆可 Tree 工具类
- BaseEnum 地址:枚举字典管理器
基础类:AreaTree
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
/**
* 中国行政地区
* @author Neo
* @since 2021/3/25 8:32
* @version 1.0
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ToString(exclude = {"parent", "children"})
public class AreaTree implements ITree<AreaTree, Long> {
private static final long serialVersionUID = -32407026969579150L;
/**
* 层级
*/
private Integer level;
/**
* 父级行政代码
*/
private Long parentCode;
/**
* 行政代码
*/
private Long areaCode;
/**
* 邮政编码
*/
private String zipCode;
/**
* 区号
*/
private String cityCode;
/**
* 名称
*/
private String name;
/**
* 简称
*/
private String shortName;
/**
* 父节点
*/
private AreaTree parent;
/**
* 子节点
*/
private List<AreaTree> children;
@Override
public Long id() {
return areaCode;
}
@Override
public Long parentId() {
return this.parentCode;
}
@Override
public void parent(AreaTree parent) {
this.parent = parent;
}
@Override
public void children(List<AreaTree> children) {
this.children = children;
}
public List<AreaTree> getChildren() {
return Objects.isNull(this.children) ? Collections.EMPTY_LIST : this.children;
}
}
基础枚举类:AreaEnum
public enum AreaEnum implements BaseEnum {
PROVINCE(0, "省/直辖市"),
CITY(1, "市/州"),
AREA(2, "县/区 "),
TOWN(3, "乡/镇"),
VILLAGE(4, "村/社区"),
;
private final int code;
private final String message;
AreaEnum(int code, String message) {
this.code = code;
this.message = message;
}
@Override
public Integer getCode() {
return this.code;
}
@Override
public String getMessage() {
return this.message;
}
}
亲测有效,测试结果就不展示了,小伙伴们自行尝试。
项目已开源, github地址:https://github.com/im-neo/address-parse