第二天业务题

2-1 说一下生成课表的业务流程

首先,生成课表用到了两个微服务,用户下单的交易微服务和执行保存的学习微服务:
用户在客户端首页浏览课程,加入课程到购物车,完成课程购买,完成支付,前端发请求到交易微服务,包含用户信息和课程信息等,交易微服务把消息投递到MQ,此时学习微服务监听MQ,订阅消息,然后补齐参数,保存课表。

2-1 说一下生成课表的业务流程

当点击马上学习或者报名的时候,先去数据库查询课程是否存在或者是否在有效期内,如果判断通过,就成功。

接下来就要保存对应的课表,在上述操作中涉及两个微服务,下单过程trade微服务调用了learning微服务,跨微服务调用,有两种方式,1.同步的feign,2.异步的mq。选取的原则是看是否需要返回值。

这里交易完成后,是trade交易微服务调用learning微服务。trade微服务不需要返回结果,只有查询才需要返回结果,所以这里使用异步的mq比较合适。

也就是说只要下单成功就投递一条消息到mq中,learning微服务监听mq,拿到投递到mq中的消息,把课程保存到课表中。即有两部分代码,一部分是在交易微服务中投递消息,一部分是在学习微服务中消费消息。

请求消息已经发过来了,我们要做的是接收,作为MQ的消费者,不是要写一个Controller,而是要写一个listener监听器,监听器需要写在学习微服务中(learning),因为是要在learning微服务中监听MQ保存课程到课表。

生成课表就是监听MQ的消息队列,接收到投递过来的消息后,对数据库进行一个新增操作,在这业务里,涉及到RabbitMQ,课表微服务及课程微服务。

首先,在课表微服务中实现监听RabbitMQ队列的功能,指定交换机名称和监听的队列。

然后,在我们接收到消息后,调用课表的业务层进行新增课表。

在新增课表时,需要调用课程微服务,根据课程ID获取课程的详细信息,并将我们需要的信息封装到实体类中,最后写入到数据库中。

2-2 说一下查询课表的业务流程

查询课表的业务使用到了课表微服务和课程微服务,根据课程ID查询出课程细腻,封装后进行返回。

首先,在课程微服务中根据当前用户ID进行分页查询,获取我们需要返回的结果。

然后,通过stream流把查询到的所有课程ID收集起来,通过调用课程微服务,获取课程信息的集合。

接下来,将获取到的信息集合转为map对象,并对分页查询的结果进行遍历,从map对象中获取课程信息封装到VO对象中,并对列表中的数据进行替换。

最后返回封装好的list集合。

2-3 说一下查询最近学习章节的业务流程

在我们的项目中,查询最近学习的章节使用了两个微服务、三张表,分别是 课程微服务 的 课程表 和 章节目录表 以及 课表微服务 的 课表。

首先,当浏览器查询的请求发过来后,从课程表中查询,设置业务条件(登录用户id,并且以最后一次学习时间倒序排列),执行查询。

虽然最近学习章节只会查询一个结果,但是由于返回结果VO中需要该用户课表的数量,为了提高性能,少从数据库查一次数量,所以这里查询该用户的所有课程,取第一个。

然后调用 课程表 对应的feign接口和 章节目录表 对应的feign接口,补充数据。

最后返回结果。

这就是我在项目中查询最近学习章节的业务流程。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值