【SpringBoot + Vue 尚庭公寓实战】公寓杂费接口实现(八)

【SpringBoot + Vue 尚庭公寓实战】公寓杂费接口实现(八)


文章目录

      • 【SpringBoot + Vue 尚庭公寓实战】公寓杂费接口实现(八)
        • 1、公寓杂费业务介绍
        • 2、公寓杂费逻辑模型介绍
        • 3、接口实现
          • 3.1、保存或更新杂费值
          • 3.2、保存或更新杂费名称
          • 3.3、查询全部杂费名称和杂费值列表
          • 3.4、 根据ID删除杂费名称
          • 3.5、 根据ID删除杂费值

1、公寓杂费业务介绍

公寓杂费共有五个接口,分别是

  1. 保存或更新杂费名称
  2. 保存或更新杂费值
  3. 查询全部杂费名称和杂费值列表
  4. 根据ID删除杂费名称
  5. 根据ID删除杂费值
2、公寓杂费逻辑模型介绍
  • 公寓-杂费值关系 表将公寓和杂费值关联起来,表示某个公寓需要支付的具体杂费。
  • 杂费值 表包含了具体的杂费项目及其单位,并通过 所对应杂费名称ID 关联到 杂费名称 表。
  • 杂费名称 表列出了所有可能的杂费类型,并通过 杂费ID杂费值 关联。

image-20240613202146892

3、接口实现

首先在FeeController中注入FeeKeyServiceFeeValueService,如下:

@Tag(name = "房间杂费管理")
@RestController
@RequestMapping("/admin/fee")
public class FeeController {@Autowiredprivate FeeKeyService feeKeyService;@Autowiredprivate FeeValueService feeValueService;
}
3.1、保存或更新杂费值

接口查看

image-20240613204324647

以下是该接口的详细信息:

接口信息:

  • 请求地址: /admin/feeValue/saveOrUpdate
  • 请求类型: POST
  • 请求内容类型: application/json

请求示例:

{"id": 0,"name": "string","unit": "string","feeKeyId": 0
}

请求参数:

参数实体参数名称传输类型是否必填数据类型schema
feeValuebodytrueFeeValueFeeValue
idfalseinteger(int64)
namefalsestring
unitfalsestring
feeKeyIdfalseinteger(int64)

响应状态:

状态码说明
200OK

响应参数:

参数实体参数名称数据类型备注
codeinteger(int32)
messagestring
dataobject

响应示例:

{"code": 0,"message": "string","data": {}
}
  • 请求地址:此接口的请求地址是 /admin/feeValue/saveOrUpdate,用于保存或更新杂费值。
  • 请求类型POST 表示这是一个 POST 请求。
  • 请求内容类型application/json 表示请求数据需要以 JSON 格式发送。
  • 请求参数
    • feeValue:包含杂费值的详细信息,其中包括 idnameunitfeeKeyId
    • id:杂费值的唯一标识,整数类型。
    • name:杂费值的名称,字符串类型。
    • unit:杂费值的单位,字符串类型。
    • feeKeyId:对应的杂费名称的 ID,整数类型。
  • 响应状态:200 表示请求成功。
  • 响应参数
    • code:返回码,整数类型。
    • message:返回信息,字符串类型。
    • data:返回数据,对象类型。

通过这个接口,可以向服务器发送包含杂费值信息的 JSON 数据,以保存或更新杂费值,并接收服务器的响应。

代码实现

// 使用 @Tag 注解为控制器打标签,方便在 API 文档中分组显示
@Tag(name = "房间杂费管理")
@RestController
@RequestMapping("/admin/fee")
public class FeeController {// 自动注入 FeeKeyService 实例@Autowiredprivate FeeKeyService feeKeyService;// 自动注入 FeeValueService 实例@Autowiredprivate FeeValueService feeValueService;// 使用 @Operation 注解为方法添加描述信息,方便生成 API 文档@Operation(summary = "保存或更新杂费值")// 映射 POST 请求到 /admin/fee/value/saveOrUpdate@PostMapping("value/saveOrUpdate")public Result saveOrUpdateFeeValue(@RequestBody FeeValue feeValue) {// 调用 feeValueService 的 saveOrUpdate 方法保存或更新杂费值feeValueService.saveOrUpdate(feeValue);// 返回操作成功的结果return Result.ok();}}
3.2、保存或更新杂费名称

接口查看

image-20240613205215545

接口信息:

  • 请求地址: /admin/feeKey/saveOrUpdate
  • 请求类型: POST
  • 请求内容类型: application/json

请求示例:

{"id": 0,"name": "string"
}

请求参数:

参数实体参数名称传输类型是否必填数据类型schema
feeKeybodytrueFeeKeyFeeKey
idfalseinteger(int64)
namefalsestring

响应状态:

状态码说明
200OK

响应参数:

参数名称数据类型描述
codeinteger(int32)返回码
messagestring返回信息
dataobject返回数据

响应示例:

{"code": 0,"message": "string","data": {}
}

解释:

  • 请求地址:此接口的请求地址是 /admin/feeKey/saveOrUpdate,用于保存或更新杂费名称。
  • 请求类型POST 表示这是一个 POST 请求。
  • 请求内容类型application/json 表示请求数据需要以 JSON 格式发送。
  • 请求参数
    • feeKey:包含杂费名称的详细信息,其中包括 idname
    • id:杂费名称的唯一标识,整数类型。
    • name:杂费名称,字符串类型。
  • 响应状态:200 表示请求成功。
  • 响应参数
    • code:返回码,整数类型。
    • message:返回信息,字符串类型。
    • data:返回数据,对象类型。

代码实现

// 使用 @Operation 注解为方法添加描述信息,方便生成 API 文档
@Operation(summary = "保存或更新杂费名称")
// 映射 POST 请求到 /admin/feeKey/saveOrUpdate
@PostMapping("key/saveOrUpdate")
public Result saveOrUpdateFeeKey(@RequestBody FeeKey feeKey) {// 调用 feeKeyService 的 saveOrUpdate 方法保存或更新杂费名称feeKeyService.saveOrUpdate(feeKey);// 返回操作成功的结果return Result.ok();
}
3.3、查询全部杂费名称和杂费值列表

查看接口

image-20240613210154730

接口信息:

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

请求参数:

  • 此接口不需要请求参数。

响应状态:

状态码说明
200OK

响应参数:

参数名称数据类型描述
codeinteger(int32)返回码
messagestring返回信息
dataarray返回数据,包含 FeeKeyVo 对象

FeeKeyVo 对象:

参数名称数据类型描述
idinteger(int32)主键
namestring杂费名称
feeValueListarray杂费值集合

FeeValue 对象:

参数名称数据类型描述
idinteger(int64)主键
namestring杂费值名称
unitstring计量单位
feeKeyIdinteger对应的杂费名称的 ID

响应示例:

{"code": 0,"message": "string","data": [{"id": 0,"name": "string","feeValueList": [{"id": 0,"name": "string","unit": "string","feeKeyId": 0}]}]
}
  • 请求地址:此接口的请求地址是 /admin/fee/list,用于获取所有杂费名称及其对应的杂费值。
  • 请求类型GET 表示这是一个 GET 请求。
  • 请求内容类型application/x-www-form-urlencoded 表示请求数据需要以 URL 编码格式发送。
  • 请求参数:此接口不需要请求参数。
  • 响应状态:200 表示请求成功。
  • 响应参数
    • code:返回码,整数类型。
    • message:返回信息,字符串类型。
    • data:返回数据,包含 FeeKeyVo 对象的数组。
    • FeeKeyVo 对象:包含 idnamefeeValueList
    • FeeValue 对象:包含 idnameunitfeeKeyId

代码实现

  • 查看响应的数据结构

    查看web-admin模块下创的com.atguigu.lease.web.admin.vo.fee.FeeKeyVo,内容如下

    @Data
    public class FeeKeyVo extends FeeKey {@Schema(description = "杂费value列表")private List<FeeValue> feeValueList;
    }
    
  • 编写Controller层逻辑

    FeeController中增加如下内容

    @Operation(summary = "查询全部杂费名称和杂费值列表")
    @GetMapping("list")
    public Result<List<FeeKeyVo>> feeInfoList() {List<FeeKeyVo> list = feeKeyService.listFeeInfo();return Result.ok(list);
    }
    
  • 编写Service层逻辑

    • FeeKeyService中增加如下内容

      List<FeeKeyVo> listFeeInfo();
      
    • FeeKeyServiceImpl中增加如下内容

      @Autowired
      private FeeKeyMapper mapper;@Override
      public List<FeeKeyVo> listFeeInfo() {return mapper.listFeeInfo();
      }
      
  • 编写Mapper层逻辑

    • FeeKeyMapper中增加如下内容

      List<FeeKeyVo> listFeeInfo();
      
    • FeeKeyMapper.xml中增加如下内容

      <resultMap id="FeeInfoList" type="com.atguigu.lease.web.admin.vo.fee.FeeKeyVo"><id property="id" column="id"/><result property="name" column="key_name"/><collection property="feeValueList" ofType="com.atguigu.lease.model.entity.FeeValue"><id column="value_id" property="id"/><result column="value_name" property="name"/><result column="value_unit" property="unit"/><result column="key_id" property="feeKeyId"/></collection>
      </resultMap><select id="listFeeInfo" resultMap="FeeInfoList">select k.id,k.name       key_name,v.id         value_id,v.name       value_name,v.unit       value_unit,v.fee_key_id key_idfrom fee_key kleft join fee_value v on k.id = v.fee_key_id and v.is_deleted = 0where k.is_deleted = 0
      </select>
      
3.4、 根据ID删除杂费名称

查看接口

image-20240613210857331

接口信息:

  • 请求地址: /admin/fee/key/deleteById
  • 请求类型: DELETE
  • 请求内容类型: application/x-www-form-urlencoded

请求参数:

参数名称传输类型是否必填数据类型schema
feeKeyIdquerytrueinteger(int64)

响应状态:

状态码说明
200OK

响应参数:

参数名称数据类型描述
codeinteger(int32)返回码
messagestring返回信息
dataobject返回数据

响应示例:

{"code": 0,"message": "","data": {}
}

解释:

  • 请求地址:此接口的请求地址是 /admin/fee/key/deleteById,用于根据 ID 删除杂费名称。
  • 请求类型DELETE 表示这是一个 DELETE 请求。
  • 请求内容类型application/x-www-form-urlencoded 表示请求数据需要以 URL 编码格式发送。
  • 请求参数
    • feeKeyId:杂费名称的唯一标识,整数类型,作为查询参数传递。
  • 响应状态:200 表示请求成功。
  • 响应参数
    • code:返回码,整数类型。
    • message:返回信息,字符串类型。
    • data:返回数据,对象类型。

代码实现

@Operation(summary = "根据id删除杂费名称")
@DeleteMapping("key/deleteById")
@Transactional  //开始事物
public Result deleteFeeKeyById(@RequestParam Long feeKeyId) {feeKeyService.removeById(feeKeyId);LambdaQueryWrapper<FeeValue> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.eq(FeeValue::getFeeKeyId,feeKeyId);feeValueService.remove(lambdaQueryWrapper);return Result.ok();
}
3.5、 根据ID删除杂费值

查看接口

Snipaste_2024-06-13_21-16-17

接口信息:

  • 请求地址: /admin/fee/value/deleteById
  • 请求类型: DELETE
  • 请求内容类型: application/x-www-form-urlencoded

请求参数:

参数名称传输类型是否必填数据类型schema
idquerytrueinteger(int64)

响应状态:

状态码说明
200OK

响应参数:

参数名称数据类型描述
codeinteger(int32)返回码
messagestring返回信息
dataobject返回数据

响应示例:

{"code": 0,"message": "","data": {}
}

解释:

  • 请求地址:此接口的请求地址是 /admin/fee/value/deleteById,用于根据 ID 删除杂费值。
  • 请求类型DELETE 表示这是一个 DELETE 请求。
  • 请求内容类型application/x-www-form-urlencoded 表示请求数据需要以 URL 编码格式发送。
  • 请求参数
    • id:杂费值的唯一标识,整数类型,作为查询参数传递。
  • 响应状态:200 表示请求成功。
  • 响应参数
    • code:返回码,整数类型。
    • message:返回信息,字符串类型。
    • data:返回数据,对象类型。

代码实现

@Operation(summary = "根据id删除杂费值")
@DeleteMapping("value/deleteById")
public Result deleteFeeValueById(@RequestParam Long id) {feeValueService.removeById(id);return Result.ok();
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android【SDK】 SDK是如何开发的,怎么打包aar包

文章目录 一、Android SDK开发示例工程二、Android SDK的开发三、打包aar包四、Android SDK的使用 一、Android SDK开发示例工程 本教程工程Git链接&#xff1a;https://gitcode.com/xiaohuihui1400/AndroidSdkExample/overview 二、Android SDK的开发 新建项目&#xff0c;…

Photoshop中图像美化工具的应用

Photoshop中图像美化工具的应用 Photoshop中的裁剪工具Photoshop中的修饰工具模糊工具锐化工具涂抹工具 Photoshop中的颜色调整工具减淡工具加深工具海绵工具 Photoshop中的修复工具仿制图章工具污点修复画笔工具修复画笔工具修补工具内容感知移动工具红眼工具 Photoshop中的裁…

Redis持久化主从哨兵分片集群

文章目录 1. 单点Redis的问题数据丢失问题并发能力问题故障恢复问题存储能力问题 2. Redis持久化 -> 数据丢失问题RDB持久化linux单机安装Redis步骤RDB持久化与恢复示例RDB机制RDB配置示例RDB的fork原理总结 AOF持久化AOF配置示例AOF文件重写RDB与AOF对比 3. Redis主从 ->…

智能制造uwb高精度定位系统模块,飞睿智能3厘米定位测距芯片,无人机高速传输

在科技日新月异的今天&#xff0c;定位技术已经渗透到我们生活的方方面面。从手机导航到自动驾驶&#xff0c;再到无人机定位&#xff0c;都离不开精准的定位系统。然而&#xff0c;随着应用场景的不断拓展&#xff0c;传统的定位技术如GPS、WiFi定位等&#xff0c;因其定位精度…

小摩法兴纷纷转多,看涨港股的时机来了吗?

恒生指数今日高开一度上涨89点报18520点&#xff0c;创近两周高。之后持续震荡下行&#xff1b;恒指临近中 午跌幅扩大&#xff0c;恒生科技指数一度跌近1.5%。截止收盘&#xff0c;恒生指数跌0.52%&#xff0c;盘面上&#xff0c;石油、煤炭、环保、建筑节能等板块涨幅居前&a…

VScode中js关闭烦人的ts检查

类似如下的代码在vscode 会报错&#xff0c;我们可以在前面添加忽略检查或者错误&#xff0c;如下&#xff1a; 但是&#xff01;&#xff01;&#xff01;这太不优雅了&#xff01;&#xff01;&#xff01;&#xff0c;js代码命名没有问题&#xff0c;错在ts上面&#xff0c;…

112、路径总和

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 叶子节点 是指没有子节点…

简单且高效的水域物探轨迹坐标转换程序

简单且高效的水域物探轨迹坐标转换程序 前言 水上测线的高精度定位是水域物探的难题&#xff0c;水域磁法、水域地震实施时常采用船舶拖拽传感器进行走航式观测&#xff0c;GPS仪器放在船舶上测量&#xff0c;造成船舶位置与传感器位置存在偏差&#xff0c;后期资料整理需要校…

QT-QPainter实现一个可切换的开关控件

1、效果 2、核心代码 #ifndef SWITCH_H #define SWITCH_H #include <QWidget> #include <QTimer>

Javase.String 类

String 类 【本节目标】1. String类的重要性2. 常用方法2.1 字符串构造2.2 String对象的比较2.3 字符串查找2.4 转化2.5 字符串替换2.7 字符串截取2.8 其他操作方法2.9 字符串的不可变性2.10 字符串修改 3. StringBuilder和StringBuffer3.2 面试题&#xff1a; 4. String类oj4.…

【MySQL】 -- 用户管理

1. 权限 如果我们只能使用root用户&#xff0c;这样存在安全隐患。这时&#xff0c;就需要使用MySQL的用户管理。创建出非root用户&#xff0c;限制其权限。 权限这个概念拿出来就是用来限制非root用户的。这样从技术手段上保证了数据的安全性和完整性&#xff0c;防止有人删库…

【SAP Abap】一条SQL语句实现支持报表项配置的财务报表

【SAP Abap】一条SQL语句实现支持报表项配置的财务报表 1、业务背景2、配置项特殊处理3、实现方式&#xff08;Hana Studio SQL语句&#xff09;4、实现方式&#xff08;Abap OpenSQL语句&#xff09;5、总结 1、业务背景 在财务三大报表之外&#xff0c;业务需要使用类似的科…

数据库复习——模式分解

模式分解这边主要包括无损分解和保持函数依赖的分解两种形式&#xff0c;简单整理一下。 无损分解 把一个 R R R 分成 ρ { R 1 , R 2 , ⋯ , R k } \rho \{R_1,R_2,\cdots,R_k\} ρ{R1​,R2​,⋯,Rk​}&#xff0c;然后通过自然连接 R 1 ⋈ R 2 ⋈ ⋯ ⋈ R k R_1\bowtie R…

git的远程管理与标签管理

✨前言✨ &#x1f4d8; 博客主页&#xff1a;to Keep博客主页 &#x1f646;欢迎关注&#xff0c;&#x1f44d;点赞&#xff0c;&#x1f4dd;留言评论 ⏳首发时间&#xff1a;2024年6月20日 &#x1f4e8; 博主码云地址&#xff1a;博主码云地址 &#x1f4d5;参考书籍&…

swift使用swift-protobuf协议通讯,使用指北

什么是Protobuf Protobuf&#xff08;Protocol Buffers&#xff09;协议&#x1f609; Protobuf 是一种由 Google 开发的二进制序列化格式和相关的技术&#xff0c;它用于高效地序列化和反序列化结构化数据&#xff0c;通常用于网络通信、数据存储等场景。 为什么要使用Proto…

【python】Sklearn—Cluster

参考学习来自 10种聚类算法的完整python操作示例 文章目录 聚类数据集亲和力传播——AffinityPropagation聚合聚类——AgglomerationClusteringBIRCH——Birch&#xff08;✔&#xff09;DBSCAN——DBSCANK均值——KMeansMini-Batch K-均值——MiniBatchKMeans均值漂移聚类——…

MySQL之复制(七)

复制 定制的复制方案 分离功能 许多应用都混合了在线事务处理(OLTP)和在线数据分析(OLAP)的查询。OLTP查询比较短并且是事务型的。OLAP查询则通常很大&#xff0c;也很慢&#xff0c;并且不要求绝对最新的数据。这两种查询给服务器带来的负担完全不同&#xff0c;因此它们需…

Linux系统部署Samba服务,共享文件夹给Windows

Samba服务是在Linux和UNIX系统上实现SMB协议的一个免费软件&#xff0c;由服务器及客户端程序构成。 Samba服务是连接Linux与Windows的桥梁&#xff0c;它通过实现SMB&#xff08;Server Message Block&#xff09;协议来允许跨平台的文件和打印机共享。该服务不仅支持Linux和…

用React编写一个密码组件表单

theme: condensed-night-purple highlight: atelier-cave-light 背景介绍 我们在使用网站或者应用程序的登录界面或创建帐户界面时&#xff0c;往往避免不了需要用户输入密码这一步骤&#xff0c;而用户是否可以选择看见他们输入的密码是十分重要的一项功能。尤其是在当输入的…

20240620每日后端---------Spring Boot中的 5 大设计模式最佳实践和示例 这些是我经常使用的设计模式并且非常喜欢

在本文中&#xff0c;我们将深入探讨五种基本设计模式&#xff0c;并探讨在 Spring Boot 项目中有效应用它们的最佳实践。每个模式都将附有一个实际示例来演示其实现。 单例模式 Singleton 模式确保一个类只有一个实例&#xff0c;并提供对它的全局访问点。这对于管理资源&am…