扣减库存代码实现1|学习笔记

简介: 快速学习扣减库存代码实现1

开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段)扣减库存代码实现1】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/703/detail/12417


扣减库存代码实现1


扣减库存方法介绍

扣减库存,就是在商品表当中。针对商品的数量减去当前订单当中商品的数量。

然后在库存操作的日志表当中记录库存操作的日志信息,这是基本的一个操作分析。

现在创建一个方法,叫 reduce。

在扣减库存注释下面输入代码: reduceGoodsNum(order)

在 reduce 后面输入 order ,也就是传递订单对象,接下来就是将其实现出来。

在72行这里添加一个注释来解释这个方法的作用就是去扣减库存。

image.png

扣减库存需要通过 goodsService 去远程调用商品服务去完成。

image.png

所以接下来要将 goodsService 的接口注入进来,通过它来完成扣减库存的操作。

在上图77行的位置输入 goodsService.reduceGoodsNum(); 括号里填写的是需要传递给 goodsservice 微服务的数据。需要传递的数据有:当前的订单  id(order_id)、 商品 id(goods_id)、商品数量 (goods_number)。

image.png

如何传递这三个数据呢?

可以以三个参数的方式传递过去。还有一种方式,可以使用日志表对应的 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 是一个布尔类型。

image.png

if(result.getSuccess().equals(shopCode.SHOP_FAIL.getSuccess())) 表示的是,如果扣减失败,就抛出一个异常,

输入代码:

{   CastException.cast(shopcode.SHOP_REDUCE-GOODS-NUM-FAIL)  //扣减库存失败

}

如果没有异常,输入代码:

Log.info(“订单:”+order.getOrderId()+”扣减库存成功”);来显示扣减库存成功

下面是整体的代码:

image.png

以上就是本节课的内容。

相关文章
|
10月前
订单服务:订单流程
订单服务:订单流程
|
SQL 消息中间件 缓存
库存扣减问题
库存扣减问题
库存扣减问题
|
7月前
|
SQL 缓存 NoSQL
商品秒杀情况下使用商品id做Redis缓存
商品秒杀情况下使用商品id做Redis缓存
40 0
|
11月前
|
SQL Java 数据库
Java开发篇 - 库存超卖,库存扣成负数?
库存扣减的时机处理,有对与不对。
213 0
|
缓存 NoSQL JavaScript
面试官:电商库存扣减如何设计?如何防止超卖?
面试官:电商库存扣减如何设计?如何防止超卖?
|
消息中间件 存储 数据库
扣减库存代码实现2|学习笔记
快速学习扣减库存代码实现2
125 0
扣减库存代码实现2|学习笔记
|
前端开发 Java 数据库
Seata案例-完成下单和扣除库存代码|学习笔记
快速学习Seata案例-完成下单和扣除库存代码
182 0
Seata案例-完成下单和扣除库存代码|学习笔记
|
Java Scala 开发者
商品打折的最终解决 | 学习笔记
快速学习商品打折的最终解决
57 0
|
存储 缓存 NoSQL
京东一面:Redis 如何实现库存扣减操作?如何防止商品被超卖?
京东一面:Redis 如何实现库存扣减操作?如何防止商品被超卖?
394 0
京东一面:Redis 如何实现库存扣减操作?如何防止商品被超卖?
|
存储 缓存 NoSQL
Redis 如何实现库存扣减操作?如何防止商品被超卖?
基于数据库单库存 基于数据库多库存 基于redis 基于redis实现扣减库存的具体实现 初始化库存回调函数(IStockCallback) 扣减库存服务(StockService)。
849 0
Redis 如何实现库存扣减操作?如何防止商品被超卖?