【SpringBoot + Vue 尚庭公寓实战】公寓杂费接口实现(八)
文章目录
- 【SpringBoot + Vue 尚庭公寓实战】公寓杂费接口实现(八)
- 1、公寓杂费业务介绍
- 2、公寓杂费逻辑模型介绍
- 3、接口实现
- 3.1、保存或更新杂费值
- 3.2、保存或更新杂费名称
- 3.3、查询全部杂费名称和杂费值列表
- 3.4、 根据ID删除杂费名称
- 3.5、 根据ID删除杂费值
1、公寓杂费业务介绍
公寓杂费共有五个接口,分别是
- 保存或更新杂费名称
- 保存或更新杂费值
- 查询全部杂费名称和杂费值列表
- 根据ID删除杂费名称
- 根据ID删除杂费值
2、公寓杂费逻辑模型介绍
- 公寓-杂费值关系 表将公寓和杂费值关联起来,表示某个公寓需要支付的具体杂费。
- 杂费值 表包含了具体的杂费项目及其单位,并通过 所对应杂费名称ID 关联到 杂费名称 表。
- 杂费名称 表列出了所有可能的杂费类型,并通过 杂费ID 与 杂费值 关联。
3、接口实现
首先在FeeController
中注入FeeKeyService
和FeeValueService
,如下:
@Tag(name = "房间杂费管理")
@RestController
@RequestMapping("/admin/fee")
public class FeeController {@Autowiredprivate FeeKeyService feeKeyService;@Autowiredprivate FeeValueService feeValueService;
}
3.1、保存或更新杂费值
接口查看
以下是该接口的详细信息:
接口信息:
- 请求地址:
/admin/feeValue/saveOrUpdate
- 请求类型:
POST
- 请求内容类型:
application/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 |
响应示例:
{"code": 0,"message": "string","data": {}
}
- 请求地址:此接口的请求地址是
/admin/feeValue/saveOrUpdate
,用于保存或更新杂费值。 - 请求类型:
POST
表示这是一个 POST 请求。 - 请求内容类型:
application/json
表示请求数据需要以 JSON 格式发送。 - 请求参数:
feeValue
:包含杂费值的详细信息,其中包括id
、name
、unit
和feeKeyId
。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、保存或更新杂费名称
接口查看
接口信息:
- 请求地址:
/admin/feeKey/saveOrUpdate
- 请求类型:
POST
- 请求内容类型:
application/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 | 返回数据 |
响应示例:
{"code": 0,"message": "string","data": {}
}
解释:
- 请求地址:此接口的请求地址是
/admin/feeKey/saveOrUpdate
,用于保存或更新杂费名称。 - 请求类型:
POST
表示这是一个 POST 请求。 - 请求内容类型:
application/json
表示请求数据需要以 JSON 格式发送。 - 请求参数:
feeKey
:包含杂费名称的详细信息,其中包括id
和name
。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、查询全部杂费名称和杂费值列表
查看接口
接口信息:
- 请求地址:
/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 |
响应示例:
{"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
对象:包含id
、name
和feeValueList
。FeeValue
对象:包含id
、name
、unit
和feeKeyId
。
代码实现
-
查看响应的数据结构
查看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删除杂费名称
查看接口
接口信息:
- 请求地址:
/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 | 返回数据 |
响应示例:
{"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删除杂费值
查看接口
接口信息:
- 请求地址:
/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 | 返回数据 |
响应示例:
{"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();
}