【SpringBoot + Vue 尚庭公寓实战】地区信息管理接口实现(九)
文章目录
- 【SpringBoot + Vue 尚庭公寓实战】地区信息管理接口实现(九)
- 1、业务说明
- 2、数据逻辑模型
- 3、接口实现
- 3.1、查询省份信息列表
- 3.2、根据省份ID查询城市信息列表
- 3.3、根据城市ID查询区县信息列表
1、业务说明
地区信息管理共有三个接口,分别是
- 查询省份信息列表
- 根据省份ID查询城市信息列表
- 根据城市ID查询区县信息列表
2、数据逻辑模型
- 省份信息表(Province):存储省份的基本信息。
省份ID
(Primary Key)省份名称
- 城市信息表(City):存储城市的基本信息,并且包含一个外键指向省份信息表。
城市ID
(Primary Key)城市名称
所属省份ID
(Foreign Key,关联到省份信息表的省份ID
)
- 区县信息表(County):存储区县的基本信息,并且包含一个外键指向城市信息表。
区县ID
(Primary Key)区县名称
所属城市ID
(Foreign Key,关联到城市信息表的城市ID
)
3、接口实现
3.1、查询省份信息列表
查看接口
接口信息:
- 请求地址:
/admin/region/province/list
- 请求类型:
GET
- 请求内容类型:
application/x-www-form-urlencoded
请求参数:
此接口不需要请求参数。
响应状态:
状态码 | 说明 |
---|---|
200 | OK |
响应参数:
参数名称 | 数据类型 | 说明 |
---|---|---|
code | integer(int32) | 返回码 |
message | string | 返回信息 |
data | array | 省份信息列表 |
data 数组中的对象结构:
参数名称 | 数据类型 | 说明 |
---|---|---|
id | integer(int64) | 省份ID |
name | string | 省份名称 |
响应示例:
{
"code": 200,
"message": "OK",
"data": [
{
"id": 1,
"name": "省份1"
},
{
"id": 2,
"name": "省份2"
}
// 更多省份信息
]
}
代码实现
// 标记该类为地区信息管理的控制器
@Tag(name = "地区信息管理")
@RestController
@RequestMapping("/admin/region")
public class RegionInfoController {
// 自动注入省份信息服务
@Autowired
private ProvinceInfoService provinceInfoService;
// 定义一个接口来查询省份信息列表
@Operation(summary = "查询省份信息列表")
@GetMapping("province/list")
public Result<List<ProvinceInfo>> listProvince() {
// 从服务层获取省份信息列表
List<ProvinceInfo> list = provinceInfoService.list();
// 返回封装好的结果
return Result.ok(list);
}
}
3.2、根据省份ID查询城市信息列表
查看接口
接口信息:
- 请求地址:
/admin/region/city/listByProvinceId
- 请求类型:
GET
- 请求内容类型:
application/x-www-form-urlencoded
请求参数:
参数名称 | 参数位置 | 是否必须 | 数据类型 | 参数说明 |
---|---|---|---|---|
id | query | true | integer(int64) | 省份ID |
响应状态:
状态码 | 说明 |
---|---|
200 | OK |
响应参数:
参数名称 | 数据类型 | 参数说明 |
---|---|---|
code | integer(int32) | 返回码 |
message | string | 返回信息 |
data | array | 城市信息列表 |
data 数组中的对象结构:
参数名称 | 数据类型 | 说明 |
---|---|---|
id | integer(int64) | 主键 |
name | string | 城市名称 |
provinceId | integer(int32) | 所属省份ID |
响应示例:
{
"code": 200,
"message": "OK",
"data": [
{
"id": 1,
"name": "城市1",
"provinceId": 1
},
{
"id": 2,
"name": "城市2",
"provinceId": 1
}
// 更多城市信息
]
}
- 请求地址:此接口的请求地址是
/admin/region/city/listByProvinceId
,用于根据省份 ID 查询城市信息列表。 - 请求类型:
GET
表示这是一个 GET 请求。 - 请求内容类型:
application/x-www-form-urlencoded
表示请求数据需要以 URL 编码格式发送。 - 请求参数
id
:省份 ID,必须提供,用于指定要查询的省份。
- 响应状态:200 表示请求成功。
- 响应参数
code
:返回码,整数类型,表示请求的状态。message
:返回信息,字符串类型,描述请求的结果。data
:数组类型,包含城市信息的列表。id
:城市 ID,整数类型。name
:城市名称,字符串类型。provinceId
:所属省份 ID,整数类型。
代码实现
@Tag(name = "地区信息管理")
@RestController
@RequestMapping("/admin/region")
public class RegionInfoController {
@Autowired
private ProvinceInfoService provinceInfoService;
@Autowired
private CityInfoService cityInfoService;
@Operation(summary = "查询省份信息列表")
@GetMapping("province/list")
public Result<List<ProvinceInfo>> listProvince() {
List<ProvinceInfo> list = provinceInfoService.list();
return Result.ok(list);
}
@Operation(summary = "根据省份id查询城市信息列表")
@GetMapping("city/listByProvinceId")
public Result<List<CityInfo>> listCityInfoByProvinceId(@RequestParam Long id) {
LambdaQueryWrapper<CityInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CityInfo::getProvinceId,id);
List<CityInfo> list = cityInfoService.list(queryWrapper);
return Result.ok(list);
}
}
通过这个接口,可以向服务器发送请求,获取指定省份的所有城市信息列表。前端可以根据这个接口返回的数据来展示城市信息,并实现省市县三级联动的第二级选择。
3.3、根据城市ID查询区县信息列表
查看接口
接口信息:
- 请求地址:
/admin/region/district/listByCityId
- 请求类型:
GET
- 请求内容类型:
application/x-www-form-urlencoded
请求参数:
参数名称 | 参数位置 | 是否必须 | 数据类型 | 参数说明 |
---|---|---|---|---|
id | query | true | integer(int64) | 城市ID |
响应状态:
状态码 | 说明 |
---|---|
200 | OK |
响应参数:
参数名称 | 数据类型 | 参数说明 |
---|---|---|
code | integer(int32) | 返回码 |
message | string | 返回信息 |
data | array | 区县信息列表 |
data 数组中的对象结构:
参数名称 | 数据类型 | 说明 |
---|---|---|
id | integer(int64) | 主键 |
name | string | 区县名称 |
cityId | integer(int32) | 所属城市ID |
响应示例:
{
"code": 200,
"message": "OK",
"data": [
{
"id": 1,
"name": "区县1",
"cityId": 1
},
{
"id": 2,
"name": "区县2",
"cityId": 1
}
// 更多区县信息
]
}
解释:
- 请求地址:此接口的请求地址是
/admin/region/district/listByCityId
,用于根据城市 ID 查询区县信息列表。 - 请求类型:
GET
表示这是一个 GET 请求。 - 请求内容类型:
application/x-www-form-urlencoded
表示请求数据需要以 URL 编码格式发送。 - 请求参数:
id
:城市 ID,必须提供,用于指定要查询的城市。
- 响应状态:200 表示请求成功。
- 响应参数:
code
:返回码,整数类型,表示请求的状态。message
:返回信息,字符串类型,描述请求的结果。data
:数组类型,包含区县信息的列表。id
:区县 ID,整数类型。name
:区县名称,字符串类型。cityId
:所属城市 ID,整数类型。
通过这个接口,可以向服务器发送请求,获取指定城市的所有区县信息列表。前端可以根据这个接口返回的数据来展示区县信息,并实现省市县三级联动的第三级选择。
代码实现
@Tag(name = "地区信息管理")
@RestController
@RequestMapping("/admin/region")
public class RegionInfoController {
@Autowired
private ProvinceInfoService provinceInfoService;
@Autowired
private CityInfoService cityInfoService;
@Autowired
private DistrictInfoService districtInfoService;
@Operation(summary = "查询省份信息列表")
@GetMapping("province/list")
public Result<List<ProvinceInfo>> listProvince() {
List<ProvinceInfo> list = provinceInfoService.list();
return Result.ok(list);
}
@Operation(summary = "根据省份id查询城市信息列表")
@GetMapping("city/listByProvinceId")
public Result<List<CityInfo>> listCityInfoByProvinceId(@RequestParam Long id) {
LambdaQueryWrapper<CityInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CityInfo::getProvinceId,id);
List<CityInfo> list = cityInfoService.list(queryWrapper);
return Result.ok(list);
}
@GetMapping("district/listByCityId")
@Operation(summary = "根据城市id查询区县信息")
public Result<List<DistrictInfo>> listDistrictInfoByCityId(@RequestParam Long id) {
LambdaQueryWrapper<DistrictInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DistrictInfo::getCityId,id);
List<DistrictInfo> list = districtInfoService.list(queryWrapper);
return Result.ok(list);
}
}