分页查询我的课表

embedded/2024/11/17 8:09:58/

文章目录

    • 概要
    • 整体架构流程
    • 技术细节
    • 小结

概要

需求分析以及接口设计

技术细节

1.Controller层:

java">private final ILearningLessonService iLearningLessonService;/*** 分页查询我的课表* @param pageQuery* @return*/@ApiOperation("分页查询我的课表")@GetMapping("/page")public PageDTO<LearningLessonVO> queryMyLessons(PageQuery pageQuery){return iLearningLessonService.queryMyLessons(pageQuery);}

2.Service层:

java">/*** 分页查询我的课表* @param pageQuery* @return*/public PageDTO<LearningLessonVO> queryMyLessons(PageQuery pageQuery) {//1.获取用户idLong userId = UserContext.getUser();//2.分页查询课程信息Page<LearningLesson> page = lambdaQuery().eq(LearningLesson::getUserId, userId).page(pageQuery.toMpPage("latest_learn_time", false));List<LearningLesson> records = page.getRecords();if (CollUtils.isEmpty(records)){return PageDTO.empty(page);}//3.将po封装成vo//3.1远程调用课程服务查询课程信息,获取剩余字段Set<Long> ids = records.stream().map(LearningLesson::getCourseId).collect(Collectors.toSet());List<CourseSimpleInfoDTO> courseInfoList = courseClient.getSimpleInfoList(ids);if (courseInfoList.isEmpty()){throw new BizIllegalException("课程不存在");}//将课程信息转为map,以便循环时一一对应课表的信息Map<Long, CourseSimpleInfoDTO> cInfoDTOMap = courseInfoList.stream().collect(Collectors.toMap(CourseSimpleInfoDTO::getId, c -> c));ArrayList<LearningLessonVO> learningLessonVOS = new ArrayList<>();for (LearningLesson lesson : records) {//3.2遍历课表循环每个课程进行封装LearningLessonVO learningLessonVO = BeanUtils.copyBean(lesson, LearningLessonVO.class);//3.3填充剩余字段//通过key(课程id)获取到该课程的详细信息CourseSimpleInfoDTO courseSimpleInfoDTO = cInfoDTOMap.get(lesson.getCourseId());learningLessonVO.setCourseName(courseSimpleInfoDTO.getName());learningLessonVO.setCourseCoverUrl(courseSimpleInfoDTO.getCoverUrl());learningLessonVO.setSections(courseSimpleInfoDTO.getSectionNum());learningLessonVOS.add(learningLessonVO);}//4.返回return PageDTO.of(page,learningLessonVOS);}

效果展示


http://www.ppmy.cn/embedded/138203.html

相关文章

git没有识别出大写字母改成小写重命名的文件目录

Git 默认不会跟踪大写字母和小写字母的区别&#xff0c;因为在大多数文件系统中&#xff0c;大写字母和小写字母被认为是相同的文件&#xff0c;只有在区分大小写的文件系统中&#xff08;如 macOS 的 HFS 或 Windows 的 NTFS&#xff09;&#xff0c;这才是一个问题。 如果重命…

LabVIEW前面板最大化显示与像素偏差分析 有源程序附件

LabVIEW前面板最大化显示与像素偏差分析 有源程序附件 LabVIEW前面板最大化显示与像素偏差分析 有源程序附件 - 北京瀚文网星科技有限公司 这个VI用于将LabVIEW程序的前面板最大化地显示在指定显示器上&#xff0c;实现步骤如下&#xff1a; 1. 获取所有显示器的信息 首先&…

‘v-scale-screen‘使用(Vue框架的大屏幕自适应组件)

v-scale-screen 是一个用于 Vue 框架的大屏幕自适应组件。它可以帮助开发者在开发大屏幕项目时实现屏幕的自适应&#xff0c;支持根据宽度、高度以及宽高比进行自适应调整&#xff0c;并且支持全屏自适应。这个组件适用于 Vue 2.7 及以上版本和 Vue 3 版本。 使用方法 1.安装…

MySql--增删改查表设计总结

一、客户端和数据库操作 1.登录 mysql -uroot -p 2.查看当前的数据库版本 show version(); 3.显示所有的数据库 show databases; 4.创建数据库 create [if not exists] databases 数据库名 character set 字符编码集 collate 排序规则&#xff1b; 5.选择数据库 use 数据库…

从二维到一维:动态规划矩阵问题的优化之道

动态规划中的矩阵问题是非常经典的应用场景&#xff0c;比如最小路径和问题。这类问题很自然地可以想到使用二维 dp 数组来求解。 我们定义&#xff1a; dp[i][j] 表示从矩阵的第 i行第 j列到右下角的最小路径和。 基本解法 求解过程从右下角开始&#xff0c;向左上角遍历&am…

第二十二章 TCP 客户端 服务器通信 - TCP设备的OPEN和USE命令关键字

文章目录 第二十二章 TCP 客户端 服务器通信 - TCP设备的OPEN和USE命令关键字TCP设备的OPEN和USE命令关键字TCP设备的OPEN和USE命令关键字 第二十二章 TCP 客户端 服务器通信 - TCP设备的OPEN和USE命令关键字 TCP设备的OPEN和USE命令关键字 可以使用位置参数(如上所述)或关键…

python爬虫获得店铺的所有商品

在编写Python爬虫以获取店铺的所有商品信息时&#xff0c;通常涉及到发送HTTP请求、解析响应内容以及处理API返回的数据。以下是一个详细的Python爬虫示例&#xff0c;用于获取店铺的商品信息。这个示例假设API返回的是JSON格式的数据&#xff0c;并且需要API密钥进行认证。 步…

mybatis在mapper.xml中怎么处理大于、小于、不等于号

第一种方法&#xff1a; 使用转义字符 大于号>>大于等于号>>小于号<< 小于等于号<<与&&amp;双引号"&quot;单引号&apos; 第二种方法&#xff1a; 使用<![CDATA[ ]]> 因为xml格式遇到这种格式会把方括号里的内容原样输…