【尚庭公寓SpringBoot + Vue 项目实战】移动端找房功能(二十一)
文章目录
1、业务介绍
找房模块一共分为三部分
- 地区信息
- 查询省份列表
- 根据省份id查询城市列表
- 根据城市id查询区县列表
- 公寓信息
- 房间信息
- 根据条件分页查询房间列表
- 根据id查询房间详细信息
- 根据公寓id分页查询房间列表
2、接口开发
2.1、地区信息
对于找房模块,地区信息共需三个接口,分别是查询省份列表、根据省份ID查询城市列表、根据城市ID查询区县列表,具体实现如下
在RegionController
中增加如下内容
@Tag(name = "地区信息")
@RestController
@RequestMapping("/app/region")
public class RegionController {
@Autowired
private ProvinceInfoService provinceInfoService;
@Autowired
private CityInfoService cityInfoService;
@Autowired
private DistrictInfoService districtInfoService;
@Operation(summary="查询省份信息列表")
@GetMapping("province/list")
public Result<List<ProvinceInfo>> listProvince(){
List<ProvinceInfo> list = provinceInfoService.list();
return Result.ok(list);
}
@Operation(summary="根据省份id查询城市信息列表")
@GetMapping("city/listByProvinceId")
public Result<List<CityInfo>> listCityInfoByProvinceId(@RequestParam Long id){
LambdaQueryWrapper<CityInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CityInfo::getProvinceId,id);
List<CityInfo> list = cityInfoService.list(queryWrapper);
return Result.ok(list);
}
@GetMapping("district/listByCityId")
@Operation(summary="根据城市id查询区县信息")
public Result<List<DistrictInfo>> listDistrictInfoByCityId(@RequestParam Long id){
LambdaQueryWrapper<DistrictInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DistrictInfo::getCityId,id);
List<DistrictInfo> list = districtInfoService.list(queryWrapper);
return Result.ok(list);
}
}
2.2、获取全部支付方式列表
对于找房模块,支付方式共需一个接口,即获取全部支付方式列表,具体实现如下
在PaymentTypeController
中增加如下内容
@Tag(name = "支付方式接口")
@RestController
@RequestMapping("/app/payment")
public class PaymentTypeController {
@Autowired
private PaymentTypeService service;
@Operation(summary = "获取全部支付方式列表")
@GetMapping("list")
public Result<List<PaymentType>> list() {
List<PaymentType> list = service.list();
return Result.ok(list);
}
}
2.3、房间信息
房间信息共需三个接口,分别是根据条件分页查询房间列表、根据ID查询房间详细信息、根据公寓ID分页查询房间列表,下面逐一实现
首先在RoomController
中注入RoomInfoService
,如下
@Tag(name = "房间信息")
@RestController
@RequestMapping("/app/room")
public class RoomController {
@Autowired
RoomInfoService roomInfoService;
}
2.2.1. 根据条件分页查询房间列表
-
查看请求和响应的数据结构
-
请求数据结构
-
current
和size
为分页相关参数,分别表示当前所处页面和每个页面的记录数。 -
RoomQueryVo
为房间的查询条件,详细结构如下:@Data @Schema(description = "房间查询实体") public class RoomQueryVo { @Schema(description = "省份Id") private Long provinceId; @Schema(description = "城市Id") private Long cityId; @Schema(description = "区域Id") private Long districtId; @Schema(description = "最小租金") private BigDecimal minRent; @Schema(description = "最大租金") private BigDecimal maxRent; @Schema(description = "支付方式") private Long paymentTypeId; @Schema(description = "价格排序方式", allowableValues = { "desc", "asc"}) private String orderType; }
-
-
响应数据结构
单个房间信息记录可查看
com.atguigu.lease.web.app.vo.room.RoomItemVo
,内容如下:@Schema(description = "APP房间列表实体") @Data public class RoomItemVo { @Schema(description = "房间id") private Long id; @Schema(description = "房间号") private String roomNumber; @Schema(description = "租金(元/月)") private BigDecimal rent; @Schema(description = "房间图片列表") private List<GraphVo> graphVoList; @Schema(description = "房间标签列表") private List<LabelInfo> labelInfoList; @Schema(description = "房间所属公寓信息") private ApartmentInfo apartmentInfo; }
-
-
编写Controller层逻辑
在
RoomController
中增加如下内容@Operation(summary = "分页查询房间列表") @GetMapping("pageItem") public Result<IPage<RoomItemVo>> pageItem(@RequestParam long current, @RequestParam long size, RoomQueryVo queryVo) { Page<RoomItemVo> page = new Page<>(current, size); IPage<RoomItemVo><