1 学习页面查询课程计划 1.1 需求分析
成都创新互联公司致力于互联网网站建设与网站营销,提供成都网站制作、做网站、网站开发、seo优化、网站排名、互联网营销、微信平台小程序开发、公众号商城、等建站开发,成都创新互联公司网站建设策划专家,为不同类型的客户提供良好的互联网应用定制解决方案,帮助客户在新的全球化互联网环境中保持优势。到目前为止,我们已可以编辑课程计划信息并上传课程视频,下一步我们要实现在线学习页面动态读取章节对应的 视频并进行播放。在线学习页面所需要的信息有两类:一类是课程计划信息、一类是课程学习信息(视频地址、学 习进度等),如下图:
在线学习集成媒资管理的需求如下:
1、在线学习页面显示课程计划
2、点击课程计划播放该课程计划对应的视频
本章节实现学习页面动态显示课程计划,进入不同课程的学习页面右侧动态显示当前课程的课程计划。
1.2 Api接口
课程计划信息从哪里获取?
目前课程计划信息在课程管理数据库和ES索引库中存在,考虑性能要求,课程发布后对课程的查询统一从ES索引库 中查询。
前端通过请求搜索服务获取课程信息,需要单独在搜索服务中定义课程信息查询接口。
本接口接收课程id,查询课程所有信息返回给前端。
[mw_shl_code=applescript,true]@ApiOperation("根据id查询课程信息")
public Map getall(String id);[/mw_shl_code]
返回的课程信息为json结构:key为课程id,value为课程内容。 1.3 服务端开发
在搜索服务中开发查询课程信息接口。
1.3.1 Service
在搜索服务中增加查询课程信息接口的service
[mw_shl_code=applescript,true]public Map 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 map = new HashMap<>();
for (SearchHit hit : searchHits) {
String courseId = hit.getId();
Map 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);[/mw_shl_code]
[mw_shl_code=applescript,true] coursePub.setGrade(grade);
coursePub.setTeachplan(teachplan);
coursePub.setDescription(description);
map.put(courseId,coursePub);
}
return map;
}
[/mw_shl_code]
1.3.2 Controller
[mw_shl_code=applescript,true]@Override @GetMapping("/getall/{id}") public Map getall(@PathVariable("id") String id) { return esCourseService.getall(id);
}
[/mw_shl_code]
1.3.3 测试
使用swagger-ui或postman测试查询课程信息接口。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。