常用业务流程梳理Day2

        首先我们模拟一个基于微服务架构的在线教育项目,旨在搭建一个面向成年人的非学历职业技能培训平台。

        作为一个B2C(Business to Customer,企业对客户)类型的教育相关项目,需要具有两个端:

  • 管理端:给老师用,核心业务是课程管理、考试题管理、学习问答管理、营销订单管理
  • 用户端:给学员用,核心业务是买课、学习、知识分享交流

        并且需要·基于RabbitMQ实现微服务之间的异步调用。

今天我们针对用户端的课表相关模块进行业务功能流程梳理。

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

        一般来说课表更加强调的是:某位用户对某个课程的拥有,和用户之间有一个多对多的关系,而反映这个关系的中间表就是用户课程表,当然这个中间表中除了记录多对多关系意外,还应该具有很多其它的字段,比如:有效期限、学习进度等等。

        首先,我们进行基础环境的准备工作。先用Mysql将课程数据导入到本地DataBase中。接着使用MyBatisPlus逆向工程根据数据库表来生成对应的三层架构及实体类。

        接下来用户完成课程购买后,我们添加课表的监听器,交易服务中用户下单完成后,会投递消息到mq,在此处接收消息,参数校验无误后,调用service接口及其serviceImpl实现类中的保存方法。

        在实现类中的保存方法编写时,先将用户购买的课程遍历保存成课表,再调用课程微服务去根据课程id查询课程信息(主键集合)。创建课程对象,根据查询到的课程信息,进行对应字段的赋值。这里推荐用stream流进行结果的收集成一张新课程List。最后调用批量保存功能saveBatch进行保存。

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

        在这个项目中,查询课表涉及到了两个微服务,课表微服务和课程微服务。

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

        由于返回结果不是课表的实体类而是一个vo,vo里包含课程的一些信息,于是我使用feign远程调用课程微服务,为了提高性能,我将feign远程调用写在循环之外,为了方便使用课程的信息,我将远程调用的结果(list)通过stream流转成了map(键是课程的id,值是课程对象)。

        最后组装结果,发返回数据。

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

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

        首先,当浏览器查询的请求发过来后,从课程表中查询,设置业务条件(登录用户Id,并且以最后一次学习时间倒序排列),执行查询,虽然最近学习章节只会查询一个结果,但由于返回结果vo中需要该用户课表的数量,为了提高性能,少从数据库查一次数量,所以这里查询该用户的所有课,取第一个。

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

        最后返回结果。

相关推荐

  1. Vue2源码梳理:update的整体实现流程

    2024-01-18 23:02:02       42 阅读
  2. js DOM模型方法复盘梳理

    2024-01-18 23:02:02       36 阅读
  3. 【K8s】Kubectl 命令梳理

    2024-01-18 23:02:02       27 阅读
  4. 业务流程

    2024-01-18 23:02:02       54 阅读
  5. 面试流程梳理

    2024-01-18 23:02:02       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-18 23:02:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-18 23:02:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-18 23:02:02       82 阅读
  4. Python语言-面向对象

    2024-01-18 23:02:02       91 阅读

热门阅读

  1. Vue3封装可拖拽的弹窗

    2024-01-18 23:02:02       50 阅读
  2. [go] 抽象工厂模式

    2024-01-18 23:02:02       47 阅读
  3. QT基础篇(10)QT5网络与通信

    2024-01-18 23:02:02       55 阅读
  4. element plus自定义组件表单校验

    2024-01-18 23:02:02       61 阅读
  5. C# Math.Floor与Math.Round

    2024-01-18 23:02:02       55 阅读
  6. html中flex的使用

    2024-01-18 23:02:02       53 阅读
  7. C#: richTextBox 富文本编辑控件使用

    2024-01-18 23:02:02       59 阅读
  8. InnoDB底层的一些主要数据结构

    2024-01-18 23:02:02       55 阅读
  9. Docker守护进程是什么

    2024-01-18 23:02:02       57 阅读
  10. pyhton合并多个Excel文件

    2024-01-18 23:02:02       50 阅读