mybatis plus 分页查询出来数据后对他二次 修改数据 封装返回
@AutoLog(value = "v_survey-搜索")
@ApiOperation(value="v_survey-搜索", notes="v_survey-搜索")
@GetMapping(value = "/search")
public Result<IPage<VSurvey>> search(
@RequestParam(name="keyword",required=true) String keyword,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
QueryWrapper<VSurvey> queryWrapper = new QueryWrapper<>();
queryWrapper.like("title", keyword)
.or()
.like("description", keyword);
queryWrapper.orderByDesc("create_time")
.orderByDesc("update_time");
Page<VSurvey> page = new Page<VSurvey>(pageNo, pageSize);
IPage<VSurvey> pageList = vSurveyService.page(page, queryWrapper);
IPage<VSurvey> dtoPage = new Page<>();
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if (sysUser.getPost().equals("teacher")){
QueryWrapper<SysUser> queryWrapper1 = new QueryWrapper<>();
queryWrapper1.eq("post", "student");
queryWrapper1.eq("del_flag", 0);
List<SysUser> list = userMapper.selectList(queryWrapper1);
dtoPage = pageList.convert(survey -> {
VSurvey dto = new VSurvey();
BeanUtils.copyProperties(survey, dto);
QueryWrapper<VSurveyAnswer> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("survey_id", dto.getId());
List<VSurveyAnswer> surveyAnswers = vSurveyAnswerMapper.selectList(queryWrapper2);
if (!list.isEmpty()&& !surveyAnswers.isEmpty() && list.size() == surveyAnswers.size()){
dto.setStatus(2);
}else{
dto.setStatus(1);
}
return dto;
});
}else{
dtoPage = pageList.convert(survey -> {
VSurvey dto = new VSurvey();
BeanUtils.copyProperties(survey, dto);
QueryWrapper<VSurveyAnswer> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("survey_id", dto.getId());
queryWrapper2.eq("student_id", sysUser.getId());
List<VSurveyAnswer> surveyAnswers = vSurveyAnswerMapper.selectList(queryWrapper2);
if (!surveyAnswers.isEmpty()){
dto.setStatus(2);
}else{
dto.setStatus(1);
}
return dto;
});
}
VSearchHistory searchHistory = new VSearchHistory();
searchHistory.setType(4);
searchHistory.setKeyword(keyword);
vSearchHistoryService.addSearchHistory(searchHistory);;
return Result.OK(dtoPage);
}
}