当前位置: 首页 > news >正文

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

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);
    }

}

相关文章:

  • JAVA EE_多线程-初阶(三)
  • 驱动开发硬核特训 · Day 6 : 深入解析设备模型的数据流与匹配机制 —— 以 i.MX8M 与树莓派为例的实战对比
  • 第十六届蓝桥杯大赛软件赛省赛 Python 大学 B 组 部分题解
  • 辛格迪客户案例 | 西藏奇正藏药MES项目
  • 【Docker基础】深入解析 Docker 存储卷:管理、绑定与实战应用
  • 安宝特新闻丨Vuzix Core™波导助力AR,视角可调、高效传输,优化开发流程
  • echarts地图添加涟漪波纹点位
  • PostgreSQL技术大讲堂 - 第86讲:数据安全之--data_checksums天使与魔鬼
  • 多模态学习分析(MLA)驱动高中差异化教学策略研究
  • 单卡4090微调大模型 DeepSeek-R1-32B
  • 人工智能时代教育主体性的哲学反思与技术治理
  • 【PostGresql】-----PG按本月、本年数据统计并且行数据转列字段数据查询
  • Kubernetes-如何进入某POD中
  • (六)深入了解AVFoundation-播放:AirPlay、画中画后台播放
  • SQLyog 小记
  • 2021第十二届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
  • 从零构建一个全栈AI应用:Next.js + FastAPI + OpenAI API
  • AbortController:让异步操作随时说停就停
  • Linux:37信号lesson26(未完)
  • 模板引擎语法-标签
  • 自己怎做网站/百度排行
  • 营销网站建设规划概念/交换友情链接的平台有哪些
  • 网站开发 东莞/手机百度最新正版下载
  • 哪些做调查问卷的网站/色盲测试图第六版
  • 基于mysql的网站用什么做/培训公司排名
  • 怎么注册网站啊/神马推广登录