01-学习页面查询课程计划-需求分析&Api定义

本文档介绍了如何集成媒资管理系统,使在线学习页面能动态显示课程计划并播放相应视频。首先进行了需求分析,明确了需要从ES索引库获取课程信息。接着,定义了API接口,前端通过此接口请求课程信息。然后,在服务端实现了查询课程信息的Service和Controller。最后,提供了测试接口的方法,并给出了 Swagger-UI 的访问地址。
摘要由CSDN通过智能技术生成

学成在线-第15天-讲义-媒资管理系统集成

1 学习页面查询课程计划

1.1 需求分析

到目前为止,我们已可以编辑课程计划信息并上传课程视频,下一步我们要实现在线学习页面动态读取章节对应的
视频并进行播放。在线学习页面所需要的信息有两类:一类是课程计划信息、一类是课程学习信息(视频地址、学
习进度等),如下图:
在这里插入图片描述
在线学习集成媒资管理的需求如下:
1、在线学习页面显示课程计划
2、点击课程计划播放该课程计划对应的视频
本章节实现学习页面动态显示课程计划,进入不同课程的学习页面右侧动态显示当前课程的课程计划

1.2 Api接口

课程计划信息从哪里获取?
目前课程计划信息在课程管理数据库和ES索引库中存在,考虑性能要求,课程发布后对课程的查询统一从ES索引库
中查询。
前端通过请求搜索服务获取课程信息,需要单独在搜索服务中定义课程信息查询接口。
本接口接收课程id,查询课程所有信息返回给前端。

@ApiOperation("根据id查询课程信息")
public Map<String,CoursePub> getall(String id);

在这里插入图片描述
因为是搜索接口,所以放在这里定义api接口

返回的课程信息为json结构:key为课程id,value为课程内容。

1.3 服务端开发

在搜索服务中开发查询课程信息接口。

1.3.1 Service

在搜索服务中增加查询课程信息接口的service

public Map<String, CoursePub> getall(String id) {
//设置索引库
SearchRequest searchRequest = new SearchRequest(es_index);
//设置类型
searchRequest.types(es_type);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//查询条件,根据课程id查询
searchSourceBuilder.query(QueryBuilders.termsQuery("id", id));
//取消source源字段过虑,查询所有字段
// searchSourceBuilder.fetchSource(new String[]{"name", "grade", "charge","pic"}, new
String[]{});
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = null;
try {
//执行搜索
searchResponse = restHighLevelClient.search(searchRequest);
} catch (IOException e) {
e.printStackTrace();
}
//获取搜索结果
SearchHits hits = searchResponse.getHits();
SearchHit[] searchHits = hits.getHits();
Map<String,CoursePub> map = new HashMap<>();
for (SearchHit hit : searchHits) {
String courseId = hit.getId();
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
String courseId = (String) sourceAsMap.get("id");
String name = (String) sourceAsMap.get("name");
String grade = (String) sourceAsMap.get("grade");
String charge = (String) sourceAsMap.get("charge");
String pic = (String) sourceAsMap.get("pic");
String description = (String) sourceAsMap.get("description");
String teachplan = (String) sourceAsMap.get("teachplan");
CoursePub coursePub = new CoursePub();
coursePub.setId(courseId);
coursePub.setName(name);
coursePub.setPic(pic);
coursePub.setGrade(grade);
coursePub.setTeachplan(teachplan);
coursePub.setDescription(description);
map.put(courseId,coursePub);
}
return map;
}

在这里插入图片描述

1.3.2 Controller

    @Override
    @GetMapping("/getall/{id}")
    public Map<String, CoursePub> getall(@PathVariable("id") String id) {
        return esCourseService.getall(id);
    }

在这里插入图片描述

1.3.3 测试
使用swagger-ui或postman测试查询课程信息接口。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

启动服务

在这里插入图片描述
http://127.0.0.1:40100/swagger-ui.html
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值