开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段):生成预订单流程分析1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/703/detail/12413
生成预订单流程分析1
内容介绍:
一、纠正操作
二、生成预订单
一、纠正操作
完成校验订单的功能后,纠正校验订单的价格合法性的操作。在校验数据和订单当中校验的是商品的单价是否合法。因为订单表里有商品价格,也是订单里面商品的价格。
需要校验它和从数据库中查询出来的商品的价格是否一样。将流程修改,即校验商品的单价是否合法。
校验:
if
(
order. getGoodsPrice().compareTo
(
goods.get GoodsPrice()
)!=
0
){,
若不相等,那么异常:
CatsException .cast(ShopCode.SHOP_GOODS_PRICE_INVALID,意思是价格非法。
二、生成预订单
校验订单完成后,接着执行生成预订单。生成预定单本质是保存功能。
订单对象在 confirmorder 中,已经从外部传递来。首先对它的状态设置为不可见。因为是预定单,当前对用户不可见。
接着进行订单 id 的设置,下一步判断运费是否合法:订单金额较大时免运费,订单金额较小时需要运费。
接着核算订单总价:如果当订单的金额比较小,需要添加运费。如果订单金额比较大,那么订单总价不需要包含运费。
下一步判断用户是否使用优惠券:用户使用优惠券后,要判断优惠券是否合法。如果优惠券已经被使用,那么就不能继续使用。
接着判断用户是否使用余额:判断它与上述判断用户使用优惠券是否合法一致的,不再赘述。
以上全部核验完后核算订单的总价:核算订单总价是否与支付的价格一致。如果使用了余额、优惠券,那么支付的价格需要减去余额,减去优惠券。核算没有问题设置订单时间,将预订单保存到数据库。
以上是生成预订单整个的流程分析。