Wujies 无界平台
平台功能(自研)

地址管理

地址管理维护平台通用的行政区划数据,表为 sys_area。内置约 3680 条省 / 市 / 区县数据,area_id 采用国标行政区划代码(如 110000 北京市、110101 东城区),可以直接作为业务外键使用。

地址数据是全局共享的:SysArea 继承 BaseEntity 而不是 TenantEntity,不按租户隔离,所有租户读到同一棵树。如果业务需要「租户自定义区域」,应另建业务表,不要修改这张表。

字段

字段说明
area_id主键,国标行政区划代码
parent_id父级 ID,根节点为 0
name全称,如「北京市」「东城区」
short_name简称,如「北京」「东城」
longitude / latitude经纬度,字符串保存
level层级:1 省、2 市、3 区县
sort排序,同级升序
status0 正常 / 1 停用
create_time / update_time 等标准审计字段

级联选择器展示时通常用 name,列表或标签场景用 short_name 更紧凑。

接口

方法路径说明
GET/system/area/list列表;默认懒加载,useTree=true 返回完整树
GET/system/area/children/{parentId}查询指定父级的子节点
GET/system/area/{areaId}详情
POST/system/area新增
PUT/system/area修改
DELETE/system/area/{areaIds}删除
POST/system/area/export导出 Excel
GET/system/area/tree完整树,已废弃,改用 /list?useTree=true

权限标识:system:area:list / query / add / edit / remove / export。后台菜单路径为 /system/area。

两种查询模式

懒加载(默认):不带 parentId 时按 parentId=0 查询一级节点;每个节点返回 hasChildren,前端点击展开时再请求 children/{parentId}。

GET /system/area/list?parentId=110000

完整树:useTree=true 一次性构建整棵树,适合数据量可控、需要本地搜索或整体回显的场景。

GET /system/area/list?useTree=true

两种模式的区别:

行为懒加载完整树
查询范围当前层级 + 子级存在性全表
hasChildren只统计 status=0 的子节点按实际构建结果
停用节点可通过 status 条件显式查询不传 status 时也会包含
适用场景级联选择器、移动端导出、后台树表、全量回显

/tree 与 /list?useTree=true 行为一致,保留只是为了兼容旧调用,新代码不要再使用。

维护注意事项

  • 根节点固定为 parent_id=0,新增一级地区时 level 填 1。
  • 删除不会校验子节点。先删父级会留下 parent_id 指向不存在节点的孤儿数据,懒加载模式下这些子节点将无法再被访问。请从叶子节点向上删除。
  • 内置数据通过初始化 SQL 导入(sys_area 约 3680 行),升级行政区划时建议新增一条 update 脚本做增量修正,不要直接改已执行过的初始化脚本。
  • 停用(status=1)不会从完整树中自动剔除;如果业务只允许选择有效地区,查询时显式传 status=0。
  • 经纬度是字符串字段,不做数值校验,导入第三方数据时注意保留原始精度。

前端用法

// 级联选择器:逐级加载
const provinces = await get('/system/area/list');            // parentId 默认 0
const cities = await get(`/system/area/children/${province.areaId}`);
const districts = await get(`/system/area/children/${city.areaId}`);

选中的 areaId 可以直接存进业务表;需要展示完整地址时,沿 parentId 向上拼接或让后端一次性返回路径。

目录