dxzmpk

endless hard working

0%

我的Springboot

问题篇

不同表之间交叉在一起,很难进行之后微服务的划分

历史篇

  1. 本来考虑用promotion表来存储用户推广的记录,但是后来业务要求确认为只有收到推广的人下单了才算推广成功,并添加到用户的推广酬金中。因此删除了推广表,在订单中添加了推广码字段。减少了信息的冗余,适应了业务。

  2. TimeQuery, 在很多查询中都用到了时间作为查询的条件。为了保证时间的有效性,每次都需要进行一系列操作:

    • 时间为空值的话,需要设定为边界值
    • 如果开始时间大于结束时间,返回错误。
    • 因为时间精确到天,天默认是0:00,也就是对于结束时间,查询得到的结果是当天之前的,这可能导致用户查询不到想要的信息,因此结束的天数要加1。

    为了方便,直接抽象出一个TimeQuery类,任何需要时间的查询都继承这个类,并实现checkTime方法,返回HttpResponse,减少了重复代码。

  3. 之前生成订单的流程是

    1. 根据请求的id查询课程
    2. 检查课程库存是否为0,如果为0直接拒绝请求
    3. 将订单信息存入表中
    4. 课程库存减1,销量加1

    可能存在的问题是如果库存中有一个课程,那么两个用户同时请求生成订单,两个用户都能申请成功,导致课程变为数量变成-1。

    解决思路:

    • 当检查课程库存不为0时,先对课程库存进行操作,否则无法生成订单。