tjxt第二天

**2-1 说一下生成课表的业务流程
生成课表业务涉及到了个微服务,分别是trade、learning、course三个微服务。
前端:点击"立即报名",发送POST请求(路径参数课程id)到交易微服务。
交易微服务:接收传来的课程id,从ThreadLocal中获取userId,保存到订单对象,保存到数据库,发送MQ消息(订单id、用户id、课程ids)
学习微服务:1.监听MQ消息,接收到(订单id、用户id、课程ids)
2.根据课程ids远程Feign调用课程微服务获取课程简单信息(其中包含课程有效学习期)
2.计算课表的过期节点(当前时间+课程有效学习期)
3.将用户id、课程id、过期节点保存到课表对象中
3.保存课表对象到数据库

亮点:
1.学习微服务远程调用课程微服务时,必须用课程ids,而不是课程id一个一个去调。
2.因为学习微服务的整个流程是根据课程ids远程调用课程微服务获取课程简单信息,利用stream流遍历课程简单信息集合收集成课表集合。如果在遍历里面保存课表不如在遍历结束后保存课表集合到数据库效率高。
3.前端可以频繁点击开始学习,重复保存订单记录,重复发送MQ消息,学习微服务会不断向数据库插入课表记录,但由于userId和courseId设置了联合唯一约束,不会重复插入课表记录

2-2 说一下查询课表的业务流程
查询课表涉及到两个微服务,分别是学习微服务和课程微服务。
因为的VO集合是课表信息(主)+课程信息(次),所以业务流程为
1.分页查询,得到当前页课表集合
2.课表集合中有课程ids,创建一个方法:根据课程ids得到一个map集合,元素为(课程id->课程简单信息)
4.遍历获取到每个课表
4-1从learningLesson对象拷贝赋值到vo 4-2获取课程信息,填充到vo 4-3返回vo
收集成voList
5.组装返回分页结果

2-3 说一下查询最近学习章节的业务流程**
查询最近学习章节总共涉及三个微服务,分别是学习微服务(主),课程微服务(次)
1.查询最近学习的课程
select * from learning_Lession where user_id = #{userId} order by latest_learn_time desc limit 1
2. 根据课表中的课程id调用课程微服务中的CourseClient查询课程信息
3. 根据课表中的章节id调用课程微服务的CatalogueClient查询章节信息
4. 结果封装

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值