【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();
}
相关推荐
五敷有你3 分钟前
【Go】常见的变量与常量
开发语言·后端·golang
爱前端的小菜鸡3 分钟前
uniapp + vue3 + Script Setup 写法变动 (持续更新)
javascript·vue.js·uni-app
生活、追梦者10 分钟前
Date TimePicker 时间选择器精确限制到时分秒,此刻按钮点击失效处理
vue.js·elementui
菜鸡且互啄6912 分钟前
Spring Boot Security自定义AuthenticationProvider
java·jvm·spring boot
青花锁13 分钟前
Springboot实战:AI大模型+亮数据代理助力短视频时代
人工智能·spring boot·后端·短视频·亮数据
Mr.Aholic29 分钟前
水果商城系统 SpringBoot+Vue
vue.js·spring boot·后端
Simaoya1 小时前
vue process.env.VUE_APP_BASE_API的相关配置及axios简单封装
前端·javascript·vue.js
一个小浪吴啊1 小时前
Java SpringBoot MongoPlus 使用MyBatisPlus的方式,优雅的操作MongoDB
java·spring boot·mongodb
特立独行的猫a1 小时前
Pinia:Vue 2 和 Vue 3 中更好用的状态管理框架
前端·javascript·vue.js·pinia·vuex
肖哥弹架构1 小时前
12张图描述大厂秒杀项目的工作细节,必须收藏,面试必备
java·后端·架构