【SpringBoot + Vue 尚庭公寓实战】地区信息管理接口实现(九)

【SpringBoot + Vue 尚庭公寓实战】地区信息管理接口实现(九)


文章目录

      • 【SpringBoot + Vue 尚庭公寓实战】地区信息管理接口实现(九)
        • 1、业务说明
        • 2、数据逻辑模型
        • 3、接口实现
          • 3.1、查询省份信息列表
          • 3.2、根据省份ID查询城市信息列表
          • 3.3、根据城市ID查询区县信息列表

1、业务说明

地区信息管理共有三个接口,分别是

  1. 查询省份信息列表
  2. 根据省份ID查询城市信息列表
  3. 根据城市ID查询区县信息列表

接口定义-后台-公寓管理-公寓列表

2、数据逻辑模型

1

  • 省份信息表(Province):存储省份的基本信息。
    • 省份ID(Primary Key)
    • 省份名称
  • 城市信息表(City):存储城市的基本信息,并且包含一个外键指向省份信息表。
    • 城市ID(Primary Key)
    • 城市名称
    • 所属省份ID(Foreign Key,关联到省份信息表的省份ID
  • 区县信息表(County):存储区县的基本信息,并且包含一个外键指向城市信息表。
    • 区县ID(Primary Key)
    • 区县名称
    • 所属城市ID(Foreign Key,关联到城市信息表的城市ID
3、接口实现
3.1、查询省份信息列表

查看接口

Snipaste_2024-06-13_23-12-40

接口信息:

  • 请求地址: /admin/region/province/list
  • 请求类型: GET
  • 请求内容类型: application/x-www-form-urlencoded

请求参数:

此接口不需要请求参数。

响应状态:

状态码说明
200OK

响应参数:

参数名称数据类型说明
codeinteger(int32)返回码
messagestring返回信息
dataarray省份信息列表

data 数组中的对象结构:

参数名称数据类型说明
idinteger(int64)省份ID
namestring省份名称

响应示例:

{
  "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查询城市信息列表

查看接口

Snipaste_2024-06-13_23-19-18

接口信息:

  • 请求地址: /admin/region/city/listByProvinceId
  • 请求类型: GET
  • 请求内容类型: application/x-www-form-urlencoded

请求参数:

参数名称参数位置是否必须数据类型参数说明
idquerytrueinteger(int64)省份ID

响应状态:

状态码说明
200OK

响应参数:

参数名称数据类型参数说明
codeinteger(int32)返回码
messagestring返回信息
dataarray城市信息列表

data 数组中的对象结构:

参数名称数据类型说明
idinteger(int64)主键
namestring城市名称
provinceIdinteger(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查询区县信息列表

查看接口

Snipaste_2024-06-13_23-24-43

接口信息:

  • 请求地址: /admin/region/district/listByCityId
  • 请求类型: GET
  • 请求内容类型: application/x-www-form-urlencoded

请求参数:

参数名称参数位置是否必须数据类型参数说明
idquerytrueinteger(int64)城市ID

响应状态:

状态码说明
200OK

响应参数:

参数名称数据类型参数说明
codeinteger(int32)返回码
messagestring返回信息
dataarray区县信息列表

data 数组中的对象结构:

参数名称数据类型说明
idinteger(int64)主键
namestring区县名称
cityIdinteger(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);
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/710087.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hexapod C-887使用手册 -- 4,5,6

4 - 拆包 小心拆包C-887 根据合同和发货注意比较发货范围的内容&#xff1a; 检查危险符号的内容。如果任何零件损坏或缺失&#xff0c;立即联系客服部门。 保存所有包装材料&#xff0c;以防产品需要返厂。 5 - 安装 本章中 安装一般注意 安装PC软件 确保通风 接地C-…

增材制造引领模具创新之路

随着科技的快速发展和制造业的不断转型升级&#xff0c;增材制造&#xff08;也称为3D打印&#xff09;技术正逐渐展现出其在模具智造中的巨大潜力和优势。增材制造以其独特的加工方式和设计理念&#xff0c;为模具行业带来了革命性的变革&#xff0c;为传统制造业注入了新的活…

第二十三节:带你梳理Vue2:Vue插槽的认识和基本使用

前言: 通过上一节的学习,我们知道了如何将数据从父组件中传递到子组件中, 除了除了将数据作为props传入到组件中,Vue还允许传入HTML, Vue 实现了一套内容分发的 API&#xff0c;这套 API 的设计灵感源自 Web Components 规范草案&#xff0c;将 <slot> 元素作为承载分发…

2千泰中英泰语词汇对照含MP3真人读音

越来越多的人到泰国旅游&#xff0c;今天这一份数据就是服务于此&#xff0c;包含了2000条泰语的日常生活词汇&#xff0c;并且每条记录都含有真人发音MP3对应。 有分100个章节&#xff0c;每个章节共有20条记录&#xff0c;非常适合一章节一章节的学习&#xff0c;具体章节有&…

R可视化:R语言基础图形合集

R语言基础图形合集 欢迎大家关注全网生信学习者系列&#xff1a; WX公zhong号&#xff1a;生信学习者Xiao hong书&#xff1a;生信学习者知hu&#xff1a;生信学习者CDSN&#xff1a;生信学习者2 基础图形可视化 数据分析的图形可视化是了解数据分布、波动和相关性等属性必…

班子考核评价的重要性与实施方法

在组织管理领域&#xff0c;班子考核评价是一项至关重要的工作&#xff0c;它不仅关系到组织的发展方向和速度&#xff0c;更直接影响到组织的凝聚力和战斗力。一个科学、公正、有效的班子考核评价体系&#xff0c;能够准确反映班子的工作成效&#xff0c;激励班子成员积极作为…

刺客信条找不到emp.dll怎么解决?emp.dll缺失的解决方法解析

emp.dll 是一个动态链接库文件&#xff0c;它在Windows操作系统中扮演着重要的角色。这个文件包含了多个函数和接口&#xff0c;允许其他程序调用这些功能来实现对多媒体设备的控制和管理。根据搜索结果&#xff0c;emp.dll 主要负责以下功能&#xff1a; 多媒体设备管理&…

XP系统安装Node.js v8.6.0并搭建Vue2开发环境(项目兼容到Vista的IE9浏览器)

下载并安装Node.js v8.6.0 通常我们开发Vue2项目&#xff0c;是通过vue create命令建立Vue2工程&#xff0c;用npm run serve命令启动Vue2网站的。 vue命令是用JavaScript写的&#xff0c;不是用C语言写的&#xff0c;必须要Node.js环境才能运行&#xff0c;由Node.js自带的np…

驱动开发(三):内核层控制硬件层

驱动开发系列文章&#xff1a; 驱动开发&#xff08;一&#xff09;&#xff1a;驱动代码的基本框架 驱动开发&#xff08;二&#xff09;&#xff1a;创建字符设备驱动 驱动开发&#xff08;三&#xff09;&#xff1a;内核层控制硬件层​​​​​​​ ←本文 目录…

【Postman的接口测试工具介绍】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

【SpringBoot】深入分析 SpringApplication 源码:彻底理解 SpringBoot 启动流程

在黄昏的余晖里&#xff0c;梦境渐浓&#xff0c;如烟如雾。心随星辰&#xff0c;徜徉远方&#xff0c;岁月静好&#xff0c;愿如此刻般绵长。 文章目录 前言一、SpringBoot 应用二、SpringApplication2.1 SpringApplication 中的属性2.2 SpringApplication 的构造器2.3 Sprin…

第一个SpringBoot程序

第一个SpringBoot程序 目录介绍 当我们创建了一个SpringBoot项目之后&#xff0c;会出现如下的目录结构 SpringBoot项⽬有两个主要的⽬录&#xff1a; src/main/java: Java源代码 src/main/resources:为静态资源或配置⽂件&#xff1a; /static&#xff1a;静态资源⽂件夹,⽐…

【python】python指南(三):使用正则表达式re提取文本中的http链接

一、引言 对于算法工程师来说&#xff0c;语言从来都不是关键&#xff0c;关键是快速学习以及解决问题的能力。大学的时候参加ACM/ICPC一直使用的是C语言&#xff0c;实习的时候做一个算法策略后台用的是php&#xff0c;毕业后做策略算法开发&#xff0c;因为要用spark&#x…

【MySQL】InnoDB引擎(MVCC)

https://www.bilibili.com/video/BV1Kr4y1i7ru/?p141 https://blog.csdn.net/weixin_52574640/article/details/129961415 MVCC&#xff0c;全称Multo-Version Concurrentcy Control,多版本并发控制。指维护一个数据的多个版本&#xff0c;使得读写操作没有冲突&#xff0c;快…

Linux电话本的编写-shell脚本编写

该电话本可以实现以下功能 1.添加用户 2.查询用户 3.删除用户 4.展示用户 5.退出 代码展示&#xff1a; #!/bin/bash PHONEBOOKphonebook.txt function add_contact() { echo "Adding new contact..." read -p "Enter name: " name …

Dubbo3 服务原生支持 http 访问,兼具高性能与易用性

作者&#xff1a;刘军 作为一款 rpc 框架&#xff0c;Dubbo 的优势是后端服务的高性能的通信、面向接口的易用性&#xff0c;而它带来的弊端则是 rpc 接口的测试与前端流量接入成本较高&#xff0c;我们需要专门的工具或协议转换才能实现后端服务调用。这个现状在 Dubbo3 中得…

【设计模式】结构型设计模式之 从IO流设计思想来看装饰器模式

介绍 装饰器模式也称为包装模式(Wrapper Pattern) 是指在不改变原有对象的基础之上&#xff0c;将功能附加到对象上&#xff0c;提供了比继承更有弹性的替代方案(扩展原有对象的功能)&#xff0c;属于结构型模式。 装饰器模式的核心是功能扩展&#xff0c;使用装饰器模式可以透…

内网不能访问网站怎么办?

内网不能访问网站是在网络使用过程中常见的问题之一。当我们使用局域网连接时&#xff0c;有时候会遇到无法访问特定网站的情况。这可能是因为网络环境复杂&#xff0c;或者受到了某些限制。本篇文章将介绍一种解决内网不能访问网站问题的产品——天联组网。 天联组网是一款由…

C#开发-集合使用和技巧(二)Lambda 表达式介绍和应用

C#开发-集合使用和技巧 Lambda 表达式介绍和应用 C#开发-集合使用和技巧介绍简单的示例&#xff1a;集合查询示例&#xff1a; 1. 基本语法从主体语句上区分&#xff1a;1. 主体为单一表达式2. 主体是代码块&#xff08;多个表达式语句&#xff09; 从参数上区分1. 带输入参数的…

【odoo | XML-RPC】odoo外部API解读,实现跨系统间的通讯!

概要 文章注意对官方的XML-RPC进行解读实操&#xff0c;以python为例&#xff0c;给大家介绍其使用方式和调用方法。 内容 什么是odoo的外部API? Odoo 的外部 API 是一种允许外部应用程序与 Odoo 实例进行交互的接口。通过 API&#xff0c;可以执行各种操作&#xff0c;例如…