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

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


文章目录

1、公寓杂费业务介绍

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

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

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

java 复制代码
@Tag(name = "房间杂费管理")
@RestController
@RequestMapping("/admin/fee")
public class FeeController {

    @Autowired
    private FeeKeyService feeKeyService;

    @Autowired
    private FeeValueService feeValueService;
}
3.1、保存或更新杂费值

接口查看

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

接口信息:

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

请求示例:

json 复制代码
{
  "id": 0,
  "name": "string",
  "unit": "string",
  "feeKeyId": 0
}

请求参数:

参数实体 参数名称 传输类型 是否必填 数据类型 schema
feeValue body true FeeValue FeeValue
id false integer(int64)
name false string
unit false string
feeKeyId false integer(int64)

响应状态:

状态码 说明
200 OK

响应参数:

参数实体 参数名称 数据类型 备注
code integer(int32)
message string
data object

响应示例:

json 复制代码
{
  "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 数据,以保存或更新杂费值,并接收服务器的响应。

代码实现

java 复制代码
// 使用 @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、保存或更新杂费名称

接口查看

接口信息:

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

请求示例:

json 复制代码
{
  "id": 0,
  "name": "string"
}

请求参数:

参数实体 参数名称 传输类型 是否必填 数据类型 schema
feeKey body true FeeKey FeeKey
id false integer(int64)
name false string

响应状态:

状态码 说明
200 OK

响应参数:

参数名称 数据类型 描述
code integer(int32) 返回码
message string 返回信息
data object 返回数据

响应示例:

json 复制代码
{
  "code": 0,
  "message": "string",
  "data": {}
}

解释:

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

代码实现

java 复制代码
// 使用 @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、查询全部杂费名称和杂费值列表

查看接口

接口信息:

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

请求参数:

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

响应状态:

状态码 说明
200 OK

响应参数:

参数名称 数据类型 描述
code integer(int32) 返回码
message string 返回信息
data array 返回数据,包含 FeeKeyVo 对象

FeeKeyVo 对象:

参数名称 数据类型 描述
id integer(int32) 主键
name string 杂费名称
feeValueList array 杂费值集合

FeeValue 对象:

参数名称 数据类型 描述
id integer(int64) 主键
name string 杂费值名称
unit string 计量单位
feeKeyId integer 对应的杂费名称的 ID

响应示例:

json 复制代码
{
  "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,内容如下

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

    FeeController中增加如下内容

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

    • FeeKeyService中增加如下内容

      java 复制代码
      List<FeeKeyVo> listFeeInfo();
    • FeeKeyServiceImpl中增加如下内容

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

    • FeeKeyMapper中增加如下内容

      java 复制代码
      List<FeeKeyVo> listFeeInfo();
    • FeeKeyMapper.xml中增加如下内容

      java 复制代码
      <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删除杂费名称

查看接口

接口信息:

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

请求参数:

参数名称 传输类型 是否必填 数据类型 schema
feeKeyId query true integer(int64)

响应状态:

状态码 说明
200 OK

响应参数:

参数名称 数据类型 描述
code integer(int32) 返回码
message string 返回信息
data object 返回数据

响应示例:

json 复制代码
{
  "code": 0,
  "message": "",
  "data": {}
}

解释:

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

代码实现

java 复制代码
@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删除杂费值

查看接口

接口信息:

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

请求参数:

参数名称 传输类型 是否必填 数据类型 schema
id query true integer(int64)

响应状态:

状态码 说明
200 OK

响应参数:

参数名称 数据类型 描述
code integer(int32) 返回码
message string 返回信息
data object 返回数据

响应示例:

json 复制代码
{
  "code": 0,
  "message": "",
  "data": {}
}

解释:

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

代码实现

java 复制代码
@Operation(summary = "根据id删除杂费值")
@DeleteMapping("value/deleteById")
public Result deleteFeeValueById(@RequestParam Long id) {
    feeValueService.removeById(id);
    return Result.ok();
}
相关推荐
Bad_Shepherd41 分钟前
vue-element-plus-admin添加自定义svg图标,并且图标选择组件可选自定义图标
vue.js·elementui·前端框架
AskHarries1 小时前
文件上传系统
后端
止语Lab2 小时前
好的 DX 不等于少写代码——三种语言的摩擦力设计课
后端
吃饱了得干活2 小时前
别再手动解析 LLM 输出了!LangChain 四种结构化输出方案对比
后端·python·langchain
程序员天天困2 小时前
Arthas trace 命令怎么用?一行定位最慢那行代码
jvm·后端
Huiturn2 小时前
GPT 5.6 连续编码 10 小时,纯 Python 啃下 Word 二进制格式——doc2docx 实现拆解
后端
dkbnull2 小时前
Spring Boot请求处理组件对比详解
java·spring boot
用户298698530142 小时前
Python 实现 Excel 与 Markdown 互转的实用指南
后端·python·excel
不能只会打代码2 小时前
Day 011 — Spring 全家桶深度拆解
spring boot·mybatis·spring aop·spring mvc·spring ioc
用户77283104908402 小时前
krono-job:零侵入、单二进制交付的分布式任务调度平台(开源)
后端