0
点赞
收藏
分享

微信扫一扫

Java 地址解析

书写经典 2023-09-11 阅读 64

收货地址智能解析

  • 省市区县文件下载地址: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

举报

相关推荐

0 条评论