## 地区信息
#### 商城应用
在亚米商城系统里,用户在填写收货地址的时候都需要用到地区信息。那么为系统提供一套**公用的地区信息**就非常有必要。例如:
![](https://img.kancloud.cn/3f/b1/3fb18e9b9a1400a39edc54cfd3d6bacb_373x601.png)
在后台中,可以对地区进行管理。
![1566357597422](https://img.kancloud.cn/24/4d/244dfdd1bc7736a927111d5d8176e5de_1324x946.png)
![1566357664626](https://img.kancloud.cn/d5/e5/d5e55d693834814041503def7f6696a8_748x471.png)
一般情况下,我们可以将地区进行分级:
1. 省份
2. 城市
3. 县区
4. 街道
对于大多数系统,一般整理到**区县级别**即可
#### 数据库设计
##### 整体实体类关系如下图:
![1566288650463](https://img.kancloud.cn/2f/bb/2fbbdab4610724bed5f7b574270e48dc_263x137.png)
##### model实体类:
```java
@Data
@TableName("tz_area")
public class Area implements Serializable {
private static final long serialVersionUID = -6013320537436191451L;
@TableId
@ApiModelProperty(value = "地区id",required=true)
private Long areaId;
@ApiModelProperty(value = "地区名称",required=true)
private String areaName;
@ApiModelProperty(value = "地区上级id",required=true)
private Long parentId;
@ApiModelProperty(value = "地区层级",required=true)
private Integer level;
@TableField(exist=false)
private List<Area> areas;
}
```
- `areaId` ,地区id
- `areaName`,地区名称
- `level`,级别,根据上面所说的地区枚举
- `parentId` ,地区上级id
##### 数据来源:
在添加数据时,我们可以根据 [worldArea](https://github.com/chency147/worldArea) 开源项目,导入对应的数据mysql 数据库脚本,包含世界各地区的地区编码以及中文名称。或者通过淘宝进行获取。地区库是十分重要的,且定义好后,不方便轻易调整。所以需要慎重添加地区库。
##### 注意:
1. 国家地区不是一成不变的,不断的会有地区和地区之间的合并,又或者是地区的分拆。因此,建议可以以淘宝的地区库为准,及时对地区库经行更新。
2. 地区的分级只是大体的**分级**,实际上,会存在镇级市、县级市等等。
3. 如果**对接其他公司的服务**,地区编号可能存在不同,需要做好对应映射关系。
4. 如果有基于**微信公众号**的产品,一些用户设置所在地为国外,可以基于自己产品的情况,保存用户信息可以存储成中国。
- 开发环境准备
- 基本开发手册
- 项目目录结构
- 权限管理
- 通用分页表格
- Swagger文档
- undertow容器
- 对xss攻击的防御
- 分布式锁
- 统一的系统日志
- 统一验证
- 统一异常处理
- 文件上传下载
- 一对多、多对多分页
- 认证与授权
- 从授权开始看源码
- 自己写个授权的方法-开源版
- 商城表设计
- 商品信息
- 商品分组
- 购物车
- 订单
- 地区管理
- 运费模板
- 接口设计
- 必读
- 购物车的设计
- 订单设计-确认订单
- 订单设计-提交订单
- 订单设计-支付
- 生产环境
- nginx安装与跨域配置
- 安装mysql
- 安装redis
- 传统方式部署项目
- docker
- 使用docker部署商城
- centos jdk安装
- docker centos 安装
- Docker Compose 安装与卸载
- docker 镜像的基本操作
- docker 容器的基本操作
- 通过yum安装maven
- 常见问题