3.4.4 Service 在学习服务中定义service方法,此方法远程请求课程管理服务、媒资管理服务获取课程学习地址。
[mw_shl_code=applescript,true]@Service public class LearningService {
@Autowired
CourseSearchClient courseSearchClient;
//获取课程
public GetMediaResult getMedia(String courseId, String teachplanId) {
//校验学生的学习权限。。是否资费等
//调用搜索服务查询
TeachplanMediaPub teachplanMediaPub = courseSearchClient.getmedia(teachplanId); if(teachplanMediaPub == null || StringUtils.isEmpty(teachplanMediaPub.getMediaUrl())){
//获取视频播放地址出错
ExceptionCast.cast(LearningCode.LEARNING_GETMEDIA_ERROR);
}
return new GetMediaResult(CommonCode.SUCCESS,teachplanMediaPub.getMediaUrl());
} }
[/mw_shl_code]
3.4.5 Controller 调用service根据课程计划id查询视频播放地址:
[mw_shl_code=applescript,true]@RestController @RequestMapping("/learning/course") public class CourseLearningController implements CourseLearningControllerApi {
@Autowired
LearningService learningService;
@Override
@GetMapping("/getmedia/{courseId}/{teachplanId}")
public GetMediaResult getmedia(@PathVariable String courseId, @PathVariable String teachplanId) {
//获取课程学习地址
return learningService.getMedia(courseId, teachplanId);
} } [/mw_shl_code]
3.4.6 测试 使用swagger-ui或postman测试学习服务查询课程视频地址接口。
3.5 前端开发 3.5.1需求分析 需要在学习中心前端页面需要完成如下功能: 1、进入课程学习页面需要带上课程Id参数及课程计划Id的参数,其中课程Id参数必带,课程计划Id可以为空。 2、进入页面根据课程Id取出该课程的课程计划显示在右侧。 3、进入页面后判断如果请求参数中有课程计划Id则播放该章节的视频。 4、进入页面后判断如果课程计划id为0则需要取出本课程第一个课程计划的Id,并播放第一个课程计划的视频。
3.5.2 api方法
[mw_shl_code=applescript,true]let sysConfig = require('@/../config/sysConfig') let apiUrl = sysConfig.xcApiUrlPre; /*获取播放地址*/ export const get_media = (courseId,chapter) => {
return http.requestGet(apiUrl+'/api/learning/course/getmedia/'+courseId+'/'+chapter); }
[/mw_shl_code]
3.3.3 配置代理 在Nginx中的ucenter.xuecheng.com虚拟主机中配置/api/learning/的路径转发,此url请转发到学习服务。
[mw_shl_code=applescript,true]#学习服务 upstream learning_server_pool{ server 127.0.0.1:40600 weight=10;
} #学习服务 location ^~ /api/learning/ {
proxy_pass http://learning_server_pool/learning/;
}[/mw_shl_code]