课程列表接口 | 学习笔记

简介: 简介:快速学习课程列表接口

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):课程列表接口】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/667/detail/11473


课程列表接口

 

内容介绍:

一、课程列表

二、实现接口

 

一、课程列表

在课程列表中,分为几部分:

首先是列表查询,里面有分页,还有条件查询。

实现条件查询要满足三个条件:

一是关注度排序,根据最新排序,根据价格做排序;

二是查询方式,还有一个课程类别,课程分类分为两级分类,第一行显示一级分类,第二行显示二级分类。

在这个过程中,点击一级分类会进行一个查询,而点击一级分类之后,界面会列出其二级分类。

比如:外语考试是一级分类,下面是外语考试里面的二级分类,再点击某个二级分类,可以进行另一次查询,所以会稍微复杂一些,要根据关注度最新价格做排序,另外根据一级和二级分类做查询。

例如:要做一个条件查询(带分页的课程),这一部分会略微复杂,把优惠写出,这是第一个功能;第二部分为当点击某一个课程,会用到课程的详情页面,在详情页面中显示数据比较多,比如会显示课程的分类—一级二级分类,这一部分有其封面、名称、价格、课程简介、讲师的名称头像、简介、课程大纲等等详细信息,要把所有数据都在页面中显示,就需要制做很多部分。

不管是我的分类、课程的价格,还是讲师、简介,根据课程ID都可以查询。

但是这些数据,每个课程只有一条记录,也就是一个课程只能一个封面、一个讲师、一个简介。

所以要写一段语句查询,第一部分写circle语句,查询信息,包括分类、简介、课程信息和讲师等等,第二部分使用之前写过的方法,把课程的章节小节列表完善。

此时进行分析,第一部分课程的条件查询有分页,第二部分课程的详细页面,包括在课程详细页面中,最后会整合阿里云的播放器,也会播放出来。

 

二、实现接口

1、创建 vo 对象,封装条件数据

@RestController

@RequestMapping(“/eduservice/teacherfront”)

@CrossOrigin

Public class TeacherFrontController  {

@Autowired

private EduTeacherService teacherSERVICE:

@Autowired

PRIVATE EDUCOURSESERVICE COURSESERVICE:

import io.swagger.annotations.ApiModelProperty:

import Lombok.Data:

@Data

publicclassCourseFrontVo {

@ApiModelPrdperty(value ="课程名称")

private String title;@ApiModelProperty(value = "讲师 id ")

private String teacherId;@ApiModelProperty(value ="一级类别 id ")

private String sub jectParentId;@ApiModelProperty(value ="二级类别 id ")

private String subjectId;

@ApiModelProperty(value = 销量排序)

private String buyCountSort;@ApiModelProperty(value ="最新时间排序")

private String gmtCreateSort;@ApiModelProperty(value =”价格排序" )

private String priceSort;

}

2、编写 controller 和 service 相关代码

①条件查询带分页查询课程

@PostMapping (" getFrontCourseList/ {page}/ {limit}")public R getFrontCourseList (@PathVariable long page, @PathVariable long limit, @RequestBody (required = false) CourseFrontVo courseFrontVo){

Page pageCourse = new Page<> (page, limit);Map map = courseService. getCourseFrontList (pageCourse, courseFrontVo) ;

//返回分页所有数据

return R. ok(). data (map) ;

3、根据讲师 id 查询所讲课程

QueryWrapperwrapper = new QueryWrapper<> () ;

//判断条件值是否为空,不为空拼接

if(!StringUtils. isEmpty(courseFrontVo. getSubjectParentId())){ //一级分类wrapper. eq( column:" subject_ parent_ id' , courseFrontVo. getSubjectParentId());if(!StringUtils. isEmpty(courseFrontVo. getSubjectId())) {

//二级分类wrapper. eq( column: " 'subject_ id", courseFrontVo. getSubjectId());

}

if(!StringUtils. isEmpty(courseFrontVo. getBuyCountSort())) {//关注度

wrapper. orderByDesc ( ..columns: "buy_ count" ) ;

}if (!StringUtils. isEmpty(courseFrontVo. getGmtCreateSort())) { //最新

wrapper. orderByDesc ( ..olumns: " gmt_create" ) ;}if (!StringUtils. isEmpty(courseFrontVo. getPriceSort())) {//价格

wrapper. orderByDesc ( .olumns: "price");

}

baseMapper. selectPage (pageParam, wrapper) ;

ListCourse> records = pageParam. getRecords () ;

long current = pageParam. getCurrent() :long pages = pageParam. getPages () ;long size = pageParam. getSize) ;long total = pageParam. getTotal();boolean hasNext = pageParam. hasNextO;//下一页boolean hasPrevious = pageParam. hasPreviousO;//上一页//把分页数据获取出来,放到 map 集 合

Map map = new HashMap<>();

map. put(" items" , records) ;map. put (" current." , current) ;map. put(" pages' , pages) ;map. put(" size' , size);map. put(" total", total);map. put (' "hasNext", hasNext) ;map. put (' 'hasPrevious' ", hasPrevious) ;//map返回

return map;

}

}

相关文章
|
弹性计算 人工智能 安全
阿里云弹性计算产品线负责人张献涛 为计算提速,弹性计算的创新与普惠
“阿里云始终围绕‘稳定、安全、性能、成本、弹性’的目标不断创新,为客户创造业务价值。”10月31日,杭州云栖大会上,阿里云弹性计算计算产品线负责人张献涛表示,通过持续的产品和技术创新,阿里云发布了HPC优化实例等多款新品,性能可提升40%,并对g8i等多款第八代ECS实例升级算力、降低成本,让客户真正体验到云计算带来的创新和普惠。
阿里云弹性计算产品线负责人张献涛  为计算提速,弹性计算的创新与普惠
|
4月前
|
JSON 搜索推荐 API
小红书笔记列表API数据解析(附代码)
本内容介绍如何利用小红书开放平台的笔记列表API,批量获取与关键词或用户相关的笔记数据,包括标题、封面图、互动数据等。接口支持按关键词分页查询及排序筛选,适用于内容聚合与用户分析。附Python示例代码,演示通过GET请求调用API的方法,并处理返回的JSON数据。
|
11月前
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
447 20
|
缓存 NoSQL Linux
Linux调试
本文介绍了Linux调试、性能分析和追踪的培训资料,涵盖调试、性能分析和追踪的基础知识及常用工具。
824 63
Linux调试
|
存储 关系型数据库 MySQL
[mysql]MGR简介与部署
[mysql]MGR简介与部署
392 1
|
Java 关系型数据库 MySQL
【Java课程设计】基于Java Swing 的图书管理系统
本次课程设计基于教材《Java基础案例教程(第二版)》中的第十三章,对课程源码的整理和分享。整个课程设计,我整理了mysql数据库的两个版本:5.7和8.0,方便各位码友们的学习!
|
Ubuntu Unix Linux
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(一)
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(一)
|
分布式计算 算法 搜索推荐
Java中可以用的大数据推荐算法
在Java中实现大数据推荐算法,通常使用Apache Mahout、Weka、DL4J或Spark MLlib。本文简要介绍了三种推荐算法:基于内容的推荐、协同过滤推荐和深度学习推荐,以及它们的使用场景。提供了每种算法的伪代码或关键代码片段。基于内容的推荐适用于有用户历史行为和物品内容信息的场景,而协同过滤适用于大量用户行为数据的场景,深度学习推荐则用于处理复杂特征。在实现时,注意数据预处理、特征提取、用户画像构建和相似度计算。
619 1
|
移动开发 前端开发 项目管理
基于jeecg-boot的nbcio-boot亿事达企业管理平台发布
基于jeecg-boot的nbcio-boot亿事达企业管理平台发布
258 0
|
传感器 存储 前端开发
视觉SLAM 关键技术与发展概述
最近看了北京理工大学的课程《智能车辆概述与应用》,感觉入门角度讲的还不错的,于是通过本文记录关键内容。
977 0