课程列表接口 | 学习笔记

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

开发者学堂课程【微服务+全栈在线教育实战项目演练(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;

}

}

相关文章
|
前端开发 JavaScript 开发者
课程列表前端(4) | 学习笔记
简介:快速学习课程列表前端(4)
课程列表前端(4) | 学习笔记
|
SQL 开发者 微服务
课程详情功能接口(2) | 学习笔记
简介:快速学习课程详情功能接口(2)
课程详情功能接口(2) | 学习笔记
|
JavaScript 前端开发 Java
课程管理-课程列表 | 学习笔记
快速学习课程管理-课程列表
课程管理-课程列表 | 学习笔记
|
数据建模 Java 开发工具
课程管理-删除视频接口 | 学习笔记
简介:快速学习课程管理-删除视频接口
138 0
课程管理-删除视频接口 | 学习笔记
|
前端开发 JavaScript API
课程详情功能前端整合 | 学习笔记
简介:快速学习课程详情功能前端整合
104 0
课程详情功能前端整合 | 学习笔记
|
前端开发 数据库 开发者
课程管理-添加和删除小节 | 学习笔记
简介:快速学习课程管理-添加和删除小节
148 0
课程管理-添加和删除小节 | 学习笔记
|
前端开发 开发者
|
前端开发 JavaScript API
课程列表前端(3) | 学习笔记
简介:快速学习课程列表前端(3)
|
前端开发 数据库 开发者
课程列表前端(2) | 学习笔记
简介:快速学习课程列表前端(2)
|
SQL 开发者 微服务
课程详情功能接口(1) | 学习笔记
简介:快速学习课程详情功能接口(1)