天机学堂day02

5 阅读7分钟

好,下面进入 day02:我的课表。这一天开始正式进入“真实业务开发”了。
day01 是认识项目,day02 是第一次真正分析需求、设计接口、理解表结构


📘 Day02 学习文档:我的课表

一、今天学什么?

一句话总结:

👉 开发“我的课表”功能,让用户买完课后能在个人中心看到自己的课程

day02 的核心目标包括:

  • 完成“我的课表”相关功能
  • 学会根据原型分析需求
  • 学会设计接口
  • 学会设计数据库表
  • 理解跨微服务业务开发

二、业务背景

在项目现状里,用户已经可以:

  • 浏览课程
  • 下单购买课程
  • 在“我的订单”里看到已购买课程

但是有个问题:

👉 买完课之后,“我的课程”页面看不到这些课程

这就导致用户没法进入学习流程。
所以 day02 的任务就是把“购买成功 → 加入课表 → 查询课表”这条链路打通。


三、为什么“我的课表”很重要?

因为这是学习链路的入口。

业务流程其实是这样的:

用户购买课程
   ↓
交易服务支付成功
   ↓
通知学习服务
   ↓
学习服务把课程加入课表
   ↓
用户在个人中心看到课程
   ↓
开始学习

所以“课表”本质上是:

👉 把交易域的数据,转成学习域的数据

这就是典型的 跨微服务业务开发


四、先看原型,再拆需求

企业开发最重要的不是上来写代码,而是先做两件事:

  • 原型分析、接口设计
  • 数据库设计

文档里明确强调,这两步最重要,因为前后端分离开发必须先有接口标准,同时设计接口的过程本身就是理清业务的过程。


五、day02 的核心业务流程

1. 课表里的课程从哪来?

答案是:

👉 凡是购买过的课程,都应该加入课表

也就是说,用户支付成功后,学习服务需要接到通知,把课程加入课表。


2. 课程状态会变化

在课表中,课程不是只有一种状态,而是会随着学习过程变化:

  • 未学习:刚买完,还没开始
  • 已学习:已经开始学了
  • 已学完:整个课程学完
  • 已失效:课程过期,不可继续学习,只能删除

这说明课表不只是“课程列表”,还是学习状态入口。


3. 学习计划是什么关系?

原型里还有“创建学习计划”的功能,但 day02 先不实现完整学习计划,只聚焦:

  • 课程加入课表
  • 课表分页查询
  • 基础管理功能

学习计划会在后面的 day03 继续展开。


六、今天要做的接口

根据文档,day02 至少要梳理出这些接口。

1. 加入课表

不是前端直接调,而是:

  • 用户支付成功
  • 交易服务通过 MQ 通知学习服务
  • 学习服务监听消息,把课程加入课表

所以这是一个 消息驱动的新增接口


2. 分页查询我的课表

用户进入个人中心“我的课程”页面时,需要分页查询自己已经加入课表的课程列表。

这个接口一般要返回:

  • 课程名
  • 封面
  • 有效期
  • 学习状态
  • 学习进度
  • 是否可继续学习

3. 删除课程

当课程学完或者失效后,用户可以删除课表中的课程。
所以还会有一个删除课表课程的接口。


七、这一天真正的技术重点

1. 你要学会“按业务拆接口”

看到页面,不要直接想代码,要先问:

  • 这个页面有哪些用户动作?
  • 哪些动作需要服务端支持?
  • 哪些动作会修改数据?
  • 哪些动作只是查询?

例如“我的课表”页面里,最少有:

  • 查询课表
  • 加入课表
  • 删除课表

这就是从原型到接口的思路。


2. 你要学会“跨服务思考”

这个功能不是一个服务自己闭门完成的:

  • 交易服务负责支付
  • 学习服务负责课表
  • 两边通过 MQ 协作

所以这里要建立一个很重要的意识:

👉 微服务开发不是只看自己模块,要先看上下游关系


3. 你要理解“学习服务为什么要单独存课表”

因为学习服务不能每次都去交易服务查“你买过什么课”。

那样会有几个问题:

  • 性能差
  • 职责混乱
  • 后续学习状态不好维护

所以学习服务必须有自己的一份“学习记录/课表记录”。

这其实就是微服务里的一个常见思想:

👉 每个服务维护自己的业务数据视图


八、你今天应该重点掌握的对象

虽然文档片段没把完整表结构全部展开,但从业务上你至少要记住:

课表记录里通常要有这些核心字段

  • 用户 id
  • 课程 id
  • 课程状态
  • 有效期
  • 最近学习时间
  • 学习计划相关字段
  • 删除标记 / 创建更新时间

你学习时要重点思考:

为什么不能只存 userId 和 courseId?

因为后续还要支持:

  • 是否开始学习
  • 是否学完
  • 是否过期
  • 是否删除
  • 学习计划统计

所以课表表一定不是简单关系表,而是一个有业务语义的实体表。


九、day02 的标准开发思路

你可以按这个顺序来学:

第一步:看懂业务

先明白:

  • 用户买完课为什么要加入课表
  • 谁来加
  • 什么时候加

第二步:设计接口

至少想清楚:

  • 查询课表接口
  • 删除接口
  • MQ 监听加入课表逻辑

第三步:设计表

思考课表记录到底要存什么

第四步:写代码

一般会涉及:

  • MQ 消费
  • Service 业务处理
  • Mapper 持久化
  • 分页查询

十、这一天最容易犯的错

1. 只盯着页面,不看业务流

你会以为只是查个列表,其实背后是:
支付成功 → MQ → 学习服务入表

2. 只想着联表查交易表

这在微服务里通常不对。
学习服务要维护自己的课表数据。

3. 一上来写代码,不先设计接口

这是最典型的新手问题。
文档里已经强调,先分析原型和接口,再做表设计。


十一、你学完 day02 应该达到什么程度?

至少要能回答这几个问题:

1. 我的课表功能是干什么的?

让用户购买后的课程进入学习服务,成为学习入口。

2. 课表数据从哪来?

来自支付成功后的 MQ 通知。

3. 为什么要单独做学习服务课表表?

因为学习状态、进度、计划等都属于学习域,不能依赖交易服务现查。

4. day02 的核心接口有哪些?

加入课表、分页查询课表、删除课表。


十二、给你的学习版笔记

你可以直接记这段:

day02 核心:
1. 用户支付成功后,课程要进入学习服务的课表
2. 交易服务通过 MQ 通知学习服务
3. 学习服务维护自己的课表数据
4. 课表页面至少要支持:分页查询、删除课程
5. 重点不是写代码,而是学会“原型分析 → 接口设计 → 表设计”

十三、今天的学习重点关键词

你只要把这几个词吃透,day02 就算稳了:

  • 我的课表
  • 支付成功
  • MQ通知
  • 学习服务
  • 分页查询
  • 跨微服务开发
  • 接口设计
  • 表结构设计