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

news2024/11/24 19:12:50

【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();
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用‘消除’技术绕过LLM的安全机制,不用训练就可以创建自己的nsfw模型

开源的大模型在理解和遵循指令方面都表现十分出色。但是这些模型都有审查的机制&#xff0c;在获得被认为是有害的输入的时候会拒绝执行指令&#xff0c;例如会返回“As an AI assistant, I cannot help you.”。这个安全功能对于防止误用至关重要&#xff0c;但它限制了模型的…

大数据同步方案怎么选,才能提高企业的业务效率?

大数据同步通常指的是在多个数据源或存储系统之间同步数据的过程&#xff0c;可以确保数据的一致性&#xff0c;提高数据的可用性和可靠性&#xff0c;同时支持数据分析和决策制定。 大数据同步的步骤通常包括&#xff1a; 数据识别&#xff1a;确定需要同步的数据类型和范围&…

《Brave New Words 》9.1 AI 世界中的就业

Part IX: Work and What Comes Next 第九部分&#xff1a;工作及其未来发展 The one who plants trees, knowing that he will never sit in their shade, has at least started to understand the meaning of life. —Rabindranath Tagore 种树的人&#xff0c;虽然知道他永远…

next.js开发中页面回退时报Unhandled Runtime ErrorTypeError destroy is not a function

Next.js开发中页面回退时报Unhandled Runtime Error:TypeError: destroy is not a function 问题描述 在Next.js开发中&#xff0c;从A页面跳转到B页面&#xff0c;再使用浏览器回退到A页面时报上述错误&#xff1a; 错误原因 是因为在B页面里&#xff0c;在使用useEffect时…

python接入汇率换算工具提高网站/小程序日活度

实时汇率换算工具可以帮助用户快速准确地计算不同货币之间最新的汇兑比例。无论是金融从业者或者是人们日常生活出行都会使用到&#xff0c;广泛用于国际结算、银行汇率查询应用、开展跨国贸易、投资等参考场景。 我们可以通过在网站或者小程序中接入这样一个小工具&#xff0…

HIGHLANDS - Stylized Environment(山林场景系统)

HIGHLANDS是一个游戏制作工具,包含制作游戏所需的一切。使用一系列模型创建自己的3D世界,使用着色器对其进行自定义,使用粒子效果使其栩栩如生,使用专为此软件包创建的132种声音使场景听起来栩栩如生。 该软件包已针对PC和游戏机进行了优化,尚未在移动和VR平台上进行测试。…

AI视频教程下载-用ChatGPT使Elementor创建高转化率的Clickbank漏斗

Elementor & ChatGPT_ Build Clickbank Bridge Funnel in 2Hours 在WordPress上进行联盟营销&#xff1a;使用Elementor创建高转化率的Clickbank漏斗&#xff1b;无需ClickFunnels&#xff0c;借助ChatGPT。 将您的联盟营销梦想变为现实——轻松且经济实惠&#xff01;解锁…

网站建设中是什么意思

网站建设&#xff08;Website Development&#xff09;是指根据网站的需求&#xff0c;利用各种技术和工具对网站进行策划、设计、开发和测试的过程。一个成功的网站建设过程包括了多个阶段和环节&#xff0c;其中包括需求分析、网站设计、网站开发、测试和发布等。 需求分析是…

k8s+springcloud+nacos部署配置

1 k8s 部署nacos-2.1.2配置k8s-nacos-statefulSet.yaml文件 apiVersion: v1 kind: Service metadata:name: nacos-headlessnamespace: rz-dtlabels:app: nacosannotations:service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" spec:# 3个端口打开&…

[vue2]智慧商城app

项目演示 查看项目效果, 明确功能模块 项目收获 通过该项目的学习, 可以收获的内容 创建项目 创建命令: vue create hm-shopping-app清理项目多余文件清理 路由配置文件 和 App.vue文件新增 API接口目录 和 utils工具方法目录 vant组件库 第三方封装好了很多的组件, 整合起…

数据中台-知识图谱平台

【数据分析小兵】专注数据中台产品领域,覆盖开发套件,包含数据集成、数据建模、数据开发、数据服务、数据可视化、数据治理相关产品以及相关行业的技术方案的分享。对数据中台产品想要体验、做二次开发、关注方案资料、做技术交流的朋友们&#xff0c;可以关注我。 1. 概述 随着…

LabVIEW开发需求制定与管理

LabVIEW开发中的需求制定是确保项目成功的关键环节。本文从用户和开发者的角度详细分析了需求涉及的方面、需求的意义、好的需求和不好需求的区别及其对开发进度和质量的影响&#xff0c;帮助用户和开发者更好地进行需求管理&#xff0c;提升项目的成功率和软件质量。 一、需求…

【CT】LeetCode手撕—5. 最长回文子串

目录 题目1-思路2- 实现⭐5. 最长回文子串——题解思路 3- ACM实现 题目 原题连接&#xff1a;5. 最长回文子串 1-思路 子串的定义&#xff1a;子串是原始字符串的一个连续部分子序列的定义&#xff1a;子序列是原始字符串的一个子集记录最长回文子串的起始位置以及其长度&am…

H5小程序视频编辑解决方案,广泛适用,灵活部署

如何在微信小程序、网页、HTML5等WEB场景中实现轻量化视频制作&#xff0c;满足多样化的运营需求&#xff0c;一直是企业面临的挑战。美摄科技凭借其在视频编辑领域的深厚积累和创新技术&#xff0c;为企业量身打造了一套H5/小程序视频编辑解决方案&#xff0c;助力企业轻松应对…

批量文件重命名技巧:轻松替换删除文件夹名中的字母,实现高效文件管理新境界

在数字化时代&#xff0c;我们每天都会面对大量的文件和文件夹。无论是工作文档、学习资料还是个人收藏&#xff0c;文件命名的规范性都显得尤为重要。然而&#xff0c;手动一个一个去修改文件名&#xff0c;不仅耗时耗力&#xff0c;还容易出错。那么&#xff0c;有没有一种方…

C++并发之定时互斥(std::timed_mutex)

目录 1 概述2 使用实例3 接口使用3.1 construct3.2 lock3.3 try_lock3.4 try_lock_for3.5 try_lock_until3.6 unlock 1 概述 定时互斥是一种时间可锁定的对象&#xff0c;它设计用于在代码的关键部分需要独占访问时发出信号&#xff0c;就像常规互斥一样&#xff0c;但还支持定…

树莓派4B学习笔记8:开机自启动Python脚本_kill关闭后台脚本

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1&#xff1a; 紧接着上篇文章学习的串口通信,今日学习如何让树莓派开机…

zabbix自定义监控mysql状态和延迟

zabbix自定义监控mysql状态和延迟 文章目录 zabbix自定义监控mysql状态和延迟zabbix自定义监控mysql状态配置主从配置自定义监控添加监控项添加触发器模拟测试异常 zabbix自定义监控mysql延迟配置自定义监控添加监控项添加触发器测试 zabbix自定义监控mysql状态 配置主从 1.安…

H5漂流瓶交友源码|社交漂流瓶H5源码 附安装教程

H5漂流瓶交友源码|社交漂流瓶H5源码 附安装教程 搭建教程 环境&#xff1a;Nginx 1.20.1-MySQL 5.6.50-PHP-7.3 上传源码至网站根目录&#xff0c;创建并导入数据库 数据库信息修改&#xff1a;/config/database.php 网站运行目录/public 配置文件加入&#xff08;从24行…

PHP和Mysql前后端交互效果实现

一、连接数据库基本函数 mysqli_connect(); 作用&#xff1a;创建数据库连接&#xff0c;打开一个新的mysql的连接。传参顺序&#xff1a;数据库地址、数据库账号、数据库密码 <?phpecho mysqli_connect("localhost",root,root) ?> /*结果&#xff1a;F…