平台功能(自研)
地址管理
地址管理维护平台通用的行政区划数据,表为 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 | 排序,同级升序 |
status | 0 正常 / 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 向上拼接或让后端一次性返回路径。