【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 {

    @Autowired
    private FeeKeyService feeKeyService;

    @Autowired
    private 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 实例
    @Autowired
    private FeeKeyService feeKeyService;

    // 自动注入 FeeValueService 实例
    @Autowired
    private 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_id
          from fee_key k
                   left join fee_value v on k.id = v.fee_key_id and v.is_deleted = 0
          where 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();
}

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

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

相关文章

Python学习之旅:你的大学计算机专业宝藏路线图

在信息时代的浪潮中&#xff0c;Python以其强大的功能和极简的语法成为了无数程序员心中的白月光。作为大学计算机专业的学生&#xff0c;掌握Python不仅能够为未来的职业生涯铺路&#xff0c;更能让您在学术研究和实际应用中如鱼得水。今天&#xff0c;我将与大家分享一套实用…

南京观海微电子-----PCB设计怎样降低EMI

开关模式电源是AC-DC或DC-DC电源的通用术语&#xff0c;这些电源使用具有快速开关动作的电路进行电压转换/转换(降压或升压)。随着每天开发出更多的设备(潜在的EMI受害者)&#xff0c;克服EMI成为工程师面临的主要挑战&#xff0c;并且实现电磁兼容性(EMC)与使设备正常运行同等…

使用高级SQL向量查询增强您的 RAG 应用程序

通过使用 MyScale 和 LangChain 创建 AI 助手来克服 RAG 的限制&#xff0c;以提高数据检索过程的准确性和效率。 让我们讨论一下如何使用 [MyScale]创建 AI 助手来克服这些 RAG 限制&#xff0c;从而提高数据检索过程的准确性和效率。我们将抓取 Hacker News 的最新故事&#…

鸿蒙轻内核A核源码分析系列七 进程管理 (2)

本文先熟悉下进程管理的文件kernel\base\core\los_process.c中的内部接口&#xff0c;读读代码&#xff0c;做些记录。 1、LiteOS-A内核进程全局变量 ⑴是进程池&#xff0c;存放各个进程控制块LosProcessCB的信息。⑵处开始的g_freeProcess是空闲进程链表&#xff0c;挂载各…

DevExpress WPF中文教程:Grid - 如何完成列和编辑器配置(设计时)?

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

【GreenHills】如何使用GHS对于不同的文件进行文档内容对比

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 利用GHS对于不同的文件进行对比。 2、 问题场景 在项目开发过程中&#xff0c;会对于工程进行版本管理&#xff0c;对于没有项目管理工具的客户&#xff0c;想要对于当前版本的源文件和上一版或其他版本的源文件进行…

RT-DETR那么火,如何使用它、如何改进它?热滚滚的使用攻略出炉了

前言 RT-DETR是百度出品的新一代检测器&#xff0c;属于DETR系列&#xff0c;即基于Transformer的目标检测框架。官方代码是基于Paddle平台的&#xff0c;当然也有Pytorch版本的&#xff0c;对于习惯使用Pytorch平台和YOLO风格的研究人员而言&#xff0c;调试和改进RT-DETR是比…

【SQL边干边学系列】08高级问题-4

文章目录 前言回顾高级问题48.客户分组49.客户分组-修复null50.使用百分比的客户分组51.灵活的客户分组 答案48.客户分组49.客户分组-修复null50.使用百分比的客户分组51.灵活的客户分组 未完待续 前言 该系列教程&#xff0c;将会从实际问题出发&#xff0c;边干边学&#xff…

c++异常处理-漏洞利用

文章目录 参考异常处理顺序eh_frame段的作用编译过程中的.eh_frame生成运行时异常处理 堆栈展开简单劫持rbpret chop1. 异常发生时的堆栈保存2. 查找.eh_frame信息3. 解析FDE并恢复CFA4. 恢复寄存器5. 堆栈展开6. 转向异常处理逻辑 先忙awd了以后补 参考 https://xz.aliyun.co…

LeetCode刷题之HOT100之二叉树的遍历

2024/6/14 这几天总是下雨&#xff0c;天气预报上面显示这个月都要持续下雨&#xff0c;下雨天了怎么办&#xff1f;我好想你&#xff0c;不敢打给你&#xff0c;我找不到原因。说着说着唱起来了哈哈&#xff01;Anyway&#xff0c;昨天晚上打开了《涅朵奇卡一个女人的一生》&a…

Vue3:解决在main.ts 中调用自定义的js文件会报错的问题

案例&#xff1a;Vue3 &#xff0c;使用的是main.ts &#xff0c;在main.ts 中调用自定义的ruoComment.js文件会报错&#xff0c; 页面报错&#xff1a; main.ts文件引用报错&#xff1a; 解决报错&#xff1a;找到tsconfig.json文件 加上如下代码&#xff1a;即可解决问题 &q…

IDC最新报告,7大维度11家大模型厂商比拼,唯一全优是谁?

如果考试题太简单&#xff0c;学渣也能拿一百昏。在 AI 圈&#xff0c;我们应该拿怎样的「试卷」来检验一直处于流量 C 位的大模型的真实水平&#xff1f;是高考题吗&#xff1f;当然不是&#xff01; 也有些人认为&#xff0c;在各种 Benchmark 榜单上&#xff0c;谁排第一谁…

ai 人工智能免费网站免费生成图片生成ppt

豆包 Kimi.ai - 帮你看更大的世界 生成ppt 讯飞智文 - AI在线生成PPT、Word 大家如有其它免费的欢迎推荐!!!

动力学仿真平台:让模型配置与仿真测试更高效!

背景概述 动力学仿真平台是一种基于计算机技术的模拟工具&#xff0c;旨在模拟和分析物理系统中的动力学行为。通过建立数学模型&#xff0c;并借助高效的数值计算方法来模拟复杂系统的运动规律&#xff0c;为科研、设计、工程等领域提供重要的决策支持。动力学仿真平台的重要性…

图像算法之镜头畸变

桶形畸变&#xff08;Barrel Distortion&#xff09;&#xff1a; 桶形畸变是一种常见于广角镜头的畸变类型。在桶形畸变中&#xff0c;图像的中心区域被向外拉伸&#xff0c;使得直线在图像边缘部分显得向内弯曲&#xff0c;看起来像一个桶。这种畸变之所以发生&#xff0c;是…

Linux操作系统学习路线

本文来自Qwen2大模型&#xff1a; Linux操作系统的全面学习是一个渐进的过程&#xff0c;涵盖从基础知识到高级特性的多个阶段。以下是一份详细的Linux操作系统学习路线图&#xff0c;包括各个阶段的学习目标、建议的学习资源和实践步骤。 1. Linux 基础知识与安装 学习目标&a…

CD工具awx之清单Inventory,管理应用与主机的多对多关系

一、什么是清单 它决定的是一个应用部署到哪些目标机&#xff0c;清单管理的是应用&#xff08;组&#xff09;关联了哪些主机&#xff08;目标机&#xff09;。 1、新建清单 2、新建组 3、关联主机 新增主机或关联已有的主机 新主机 现有主机 服务关联主机完成&#xf…

ElementPlus国际化(将组件的默认语言改为中文)

文章目录 1. Element-plus的默认语言2. 编辑 main.js 文件3. 效果&#xff08;以分页条组件为例&#xff09; 1. Element-plus的默认语言 Element-plus的默认语言是英语&#xff0c;可修改为其它语言 2. 编辑 main.js 文件 import {createApp} from vue import ElementPlus …

deepin V23 RC2 正式发布!

deepin 是一款基于 Linux 的开源桌面操作系统&#xff0c;今天 deepin V23 RC2 正式发布&#xff0c;欢迎体验与反馈&#xff01;感谢每一位 deepiner 提供想法与建议&#xff0c;让我们一起为打造美观易用、安全可靠的开源操作系统而努力&#xff01; 【功能新增与优化】 新增…

电脑自带录屏在哪?电脑录屏,4个详细方法

在现代社会中&#xff0c;越来越多的人需要在电脑上录制视频&#xff0c;比如录制游戏操作、制作教学视频、演示文稿等等。因此&#xff0c;电脑录屏成为了一项非常重要的功能。那么电脑自带录屏在哪&#xff1f;本文将带领大家看看可以使用哪些方法进行录屏。 录屏方法一&…