条件分页排序模板
@Override
public PageVO<ProjectDTO> queryProjects(ProjectQueryDTO projectQueryDTO, String order, Integer pageNo, Integer pageSize, String sortBy) {
QueryWrapper<Project> queryWrapper = new QueryWrapper<>();
//搜索条件是标的状态
queryWrapper.lambda().eq(Objects.nonNull(projectQueryDTO.getProjectStatus()),Project::getProjectStatus, projectQueryDTO.getProjectStatus());
//搜索条件是标的名称
queryWrapper.lambda().eq(Objects.nonNull(projectQueryDTO.getName()),Project::getName, projectQueryDTO.getName());
//搜索条件是标的类型
queryWrapper.lambda().eq(StringUtils.isNotBlank(projectQueryDTO.getType()),Project::getType, projectQueryDTO.getType());
//搜索条件是年化利率区间
if (Objects.nonNull(projectQueryDTO.getStartAnnualRate())){
queryWrapper.lambda().ge(Project::getAnnualRate, projectQueryDTO.getStartAnnualRate());
}
if (Objects.nonNull(projectQueryDTO.getEndAnnualRate())){
queryWrapper.lambda().le(Project::getAnnualRate, projectQueryDTO.getEndAnnualRate());
}
//搜索条件是借款期限区间
if (Objects.nonNull(projectQueryDTO.getStartPeriod())){
queryWrapper.lambda().ge(Project::getPeriod, projectQueryDTO.getStartPeriod());
}
if (Objects.nonNull(projectQueryDTO.getEndPeriod())){
queryWrapper.lambda().le(Project::getPeriod, projectQueryDTO.getEndPeriod());
}
//构造分页对象
Page<Project> objectPage = new Page<>(pageNo, pageSize);
//排序
if (StringUtils.isNotBlank(sortBy)&&StringUtils.isNotBlank(order)) {
if (order.toLowerCase().equals("desc")) {
queryWrapper.orderByDesc(sortBy);
}
if (order.toLowerCase().equals("asc")) {
queryWrapper.orderByAsc(sortBy);
}
}else {//如果客户不打算排序,都按照时间倒叙排序
queryWrapper.lambda().orderByDesc(Project::getCreateDate);
}
//分页查询
IPage<Project> projectIPage = page(objectPage, queryWrapper);
//将查询结果转换为DTO
IPage<ProjectDTO> convert = projectIPage.convert(project -> {
ProjectDTO projectDTO = new ProjectDTO();
BeanUtils.copyProperties(project, projectDTO);
return projectDTO;
});
//将查询结果封装到PageVO中
PageVO<ProjectDTO> projectDTOS = new PageVO<>(convert.getRecords(), convert.getTotal(), pageNo, pageSize);
return projectDTOS;
}
下面是controller
@ApiOperation("查询标的列表")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectQueryDTO", value = "标的信息", required = true,
dataType = "ProjectQueryDTO", paramType = "body"),
@ApiImplicitParam(name = "order", value = "排序方式", required = true,
dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "pageNo", value = "页码", required = true,
dataType = "Integer", paramType = "query"),
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", required = true,
dataType = "Integer", paramType = "query"),
@ApiImplicitParam(name = "sortBy", value = "排序字段", required = true,
dataType = "String", paramType = "query")
})
@PostMapping(value = "/projects/q")
@Override
public RestResponse<PageVO<ProjectDTO>> queryProjects(@RequestBody ProjectQueryDTO projectQueryDTO, String order, Integer pageNo, Integer pageSize, String sortBy) {
//执行查询
PageVO<ProjectDTO> pageVO = projectService.queryProjects(projectQueryDTO, order, pageNo, pageSize, sortBy);
return RestResponse.success(pageVO);
}
还没有评论,来说两句吧...