开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段):扣减库存代码实现1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/703/detail/12417
扣减库存代码实现1
扣减库存方法介绍
扣减库存,就是在商品表当中。针对商品的数量减去当前订单当中商品的数量。
然后在库存操作的日志表当中记录库存操作的日志信息,这是基本的一个操作分析。
现在创建一个方法,叫 reduce。
在扣减库存注释下面输入代码: reduceGoodsNum(order)
在 reduce 后面输入 order ,也就是传递订单对象,接下来就是将其实现出来。
在72行这里添加一个注释来解释这个方法的作用就是去扣减库存。
扣减库存需要通过 goodsService 去远程调用商品服务去完成。
所以接下来要将 goodsService 的接口注入进来,通过它来完成扣减库存的操作。
在上图77行的位置输入 goodsService.reduceGoodsNum(); 括号里填写的是需要传递给 goodsservice 微服务的数据。需要传递的数据有:当前的订单 id(order_id)、 商品 id(goods_id)、商品数量 (goods_number)。
如何传递这三个数据呢?
可以以三个参数的方式传递过去。还有一种方式,可以使用日志表对应的 pojo 类去进行封装。所以我们创建一个对象,
输入代码:
TradeGoodsNumberLoggoodsNumberLog = new
TradeGoodsNumberLog;
并在 goodsService.reduceGoodsNum(); 括号里加上 goodsNumberLog
这里面就含有刚才分析的三个参数,然后开始进行封装,
输入代码:
goodsNumberLog.setOrderId(order.getOrderId());
goodsNumberLog.setGoodsId(order.getGoodsId());
goodsNumberLog.setGoodsNumber(order.getGoodsNumber());
把三个参数呢,传递到封装的对象里面,让它去进行一个扣减,扣减完成后,我们需要一个返回值,也就是需要知道扣减的结果。
所以在 goodsService.reduceGoodsNum(goodsNumberLog); 前面输入 Result result =
接下来来判断一下这个结果。
输入代码 :
if(result.getSuccess().equals(shopCode.SHOP_FAIL.getSuccess()))
然后通过查看代码发现, getSuccess 是一个布尔类型。
if(result.getSuccess().equals(shopCode.SHOP_FAIL.getSuccess()))
表示的是,如果扣减失败,就抛出一个异常,
输入代码:
{ CastException.cast(shopcode.SHOP_REDUCE-GOODS-NUM-FAIL) //扣减库存失败
}
如果没有异常,输入代码:
Log.info(“订单:”+order.getOrderId()+”扣减库存成功”)
;来显示扣减库存成功
下面是整体的代码:
以上就是本节课的内容。