3.4.4 Service 在学习服务中定义service方法,此方法远程请求课程管理服务、媒资管理服务获取课程学习地址。 [AppleScript] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 @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()); } } 3.4.5 Controller 调用service根据课程计划id查询视频播放地址: [AppleScript] 纯文本查看 复制代码 ? 1 2 3 4 5 6 7 8 9 @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); } } 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方法 [AppleScript] 纯文本查看 复制代码 ? 1 2 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); } 3.3.3 配置代理 在Nginx中的ucenter.xuecheng.com虚拟主机中配置/api/learning/的路径转发,此url请转发到学习服务。 [AppleScript] 纯文本查看 复制代码 ? 1 2 3 4 #学习服务 upstream learning_server_pool{ server 127.0.0.1:40600 weight=10; } #学习服务 location ^~ /api/learning/ { proxy_pass http://learning_server_pool/learning/; }