2-1 说一下生成课表的业务流程
生成课表用到了两个微服务,分别是交易微服务和课表微服务
交易微服务: 用户在客户端首页浏览课程,加入课程到购物车,完成课程购买
支付成功,发送消息到MQ
学习微服务 :监听MQ 消费消息 执行保存课表
调用课程微服务去根据课程id查询课程信息
创建课程对象进行赋值,然后保存课程
2-2 说一下查询课表的业务流程
查询课表用到了两个微服务,课表微服务和课程微服务。
首先,当浏览器查询的请求发过来后,从课程表中查询,设置分页条件(分页需要的参数),设置业务条件(登录用户Id和课程id,并且以最后一次学习时间倒序排列),执行查询
由于返回结果不是课表的实体类而是一个vo,vo里包含课程的一些信息,于是我使用feign远程调用课程微服务,为了提高性能,我将feign远程调用写在循环之外,为了方便使用课程的信息,我将远程调用的结果(list)通过stream流转成了map(键是课程的id,值是课程对象)。
最后组装结果,发返回数据。
这就是我在项目中查询课表的业务流程。
2-3 说一下查询最近学习章节的业务流程
在我的项目中,查询最近学习章节使用了两个微服务,三张表,分别是课程微服务的课程表和章节目录表,以及课表微服务的课表。
首先,当浏览器查询的请求发过来后,从课程表中查询,设置业务条件(登录用户Id,并且以最后一次学习时间倒序排列),执行查询,虽然最近学习章节只会查询一个结果,但由于返回结果vo中需要该用户课表的数量,为了提高性能,少从数据库查一次数量,所以这里查询该用户的所有课,取第一个。
然后调用而课程表对应的feign接口和章节目录表对应的feign接口,补充数据。
最后返回结果。
这就是我在项目中查询最近学习章节的业务流程