2-1 说一下生成课表的业务流程
1.用户购买/报名成功后,会进入"服务交易模块"(如为购买,需判断是否完成交易);
2.使用RabbitMQ将消息异步投递给"学习服务模块"(注意课程有效期);
3."学习服务模块"添加注解@RabbitListener消费消息,调用方法保存课程表.
4.写service方法:
① 根据课程id,调用课程微服务,查询回结果(不能循环调用feign!!!)做非空判断;
② 用stream流和map来补全课表对象,并收集(防止循环访问数据库);
③ 调用this.saveBatch来保存课表.
2-2 说一下查询课表的业务流程
1.看接口文档,确定接口四要素:请求方式、请求路径、请求参数、响应结果;
2.参考已完成微服务,标注swagger相关注解;
3.写分页查询条件,获取threadLocal(参考已完成微服务)中的用户id,并以此为查询条件;
4.获取当前页数据,判断有无课程,没有返回空集合;
5.收集当前页的课程id到一个set集合,定义一个set转map方法,返回结果中key为课程id,value为对应的课程对象;
6.用stream流和map补全learningvo并封装到一个list集合;
7.返回分页参数和list集合;
2-3 说一下查询最近学习章节的业务流程
1.分析业务要用到的表:学生课表、草稿课程、目录草稿;
2.根据用户登录id 查询出结果,倒序取1个,得到LearningLesson对象;
3.根据LearningLesson对象中的courseId,调用courseClient微服务查询课程信息;
4.根据LearningLesson对象中的章节id,调用CatalogueClient微服务查询章节信息;
5.组装返回.