mybatis plus 分页查询出来数据后对他二次 修改数据 封装返回

发布于:2025-04-14 ⋅ 阅读:(17) ⋅ 点赞:(0)

mybatis plus 分页查询出来数据后对他二次 修改数据 封装返回

  /**
     * 搜索问卷
     *
     * @param keyword
     * @param pageNo
     * @param pageSize
     * @return
     */
    @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) {
        
        // 1. 执行搜索
        QueryWrapper<VSurvey> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("title", keyword)
                   .or()
                   .like("description", keyword);
		queryWrapper.orderByDesc("create_time") // 按创建时间倒序
				.orderByDesc("update_time"); // 如果 create_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);
			// 封装包含状态标签的DTO对象
			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{
                // 封装包含状态标签的DTO对象
			 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;
			});
		}


        
        // 2. 保存搜索记录
		VSearchHistory searchHistory = new VSearchHistory();
		searchHistory.setType(4);
		searchHistory.setKeyword(keyword);
		vSearchHistoryService.addSearchHistory(searchHistory);;
        
        return Result.OK(dtoPage);
    }

}