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]