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

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

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

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


扣减库存代码实现2


扣减库存服务端编写

首先创建接口方法,如图中所示:

image.png

然后会打开以下界面,然后在这里做一个注释,也就是扣减库存

下面针对这个方法进行一个实现,

先打开下图所示界面:

image.png

然后进行以下操作:

image.png

点击 Implement methods 后会弹出如下图所示窗口:

image.png

点击确认后会显示以下界面:

image.png

对于商品的微服务,因为要扣减库存,所以为了保证代码的见状性,要先判断当前提交的对象是否合法。

在上图30行代码下面输入代码:

if (goodsNumberLog == nuil ||

goodsNumberLog-getGoodsNumber() == null ||

goodsNumberLog.getorderId() == nu11 ||

goodsNumberLog-getGoodsNumber() == null ||

goodsNumberLog-getGoodsNumber( ).intvalue() <= o) {

}

return null;

image.png

如果 goodsNumber 等于空,

或者 goodsNumberLog-getGoodsNumber 等于空,或者订单 id 等于空,或着数量等于空,或者 getGoodsNumber().intValue 小于等于零,那么都认为现在的操作是非法的操作。

那么,输入代码:

CastException.cast(shopcode.SHOP_REQUEST_PARAMETER_VALID)

来显示当前的请求参数非法。如果参数没问题,就要进行库存的扣减。

首先,更新 trade_goods 的表格:

image.png在这个表格,减去当前某一个商品的库存信息。

然后进行处理,

首先要将商品对象查询出来,输入代码:

TradeGoodsgoods=

goodsMapper.selectByprimaryKey(goodsNumberLog.getGoodsId());

根据当前的商品id把商品对象查询出来。然后要做一个判断,判断当前库存是否充足。

输入代码:

if(goods.getGoodsNumber()<goodsNumberLog.getGoodsNumber()){

//如果库存数量小于扣减的数量

castException.cast(Shopcode.SHOP_GoODs_NUM_NOT_ENOUGH);

//显示商品库存不足

}

goods.setGoodsNumber(goods.getGoodsNumber()-goodsNumberLog.getGoodsNumber());

//库存充足则减库存

goodsMapper.updateByPrimaryKey(goods ) ;

//更新数据

return dull;

}

}

上面的代码中,若库存不足,就不能进行扣减。如果库存足够的话,就更新当前对象的库存的数量,然后减库存完成之后,要进行数据的更新,这样就完成减库存。

完成减库存操作之后,要记录一下库存操作的日志,由于将来你不管是加库存呢还是减库存,都要做一个记录,最好针对 good_snumber,也就是当前的库存数量的操作做一个正负数的一个区分。减库存是负操作,加库存是一个正操作。

代码是:

goodsNumberLog.setGoodsNumber(-

(goodsNumberLog.getGoodsNumber()));

同时也要记录时间,代码是:

goodsNumberLog.setLogTime(new Date());

接下来,要存储到数据库中

这里我们要将 GoodsNumberLog 的 map 对象注入进来:

image.png

注入进来之后,插入一条日信息,输入代码:

goodsNumberLogMapper.insert(goodsNumberLog);

整体代码如下:

image.png

这部分完成之后,返回一个结果,代码是,将 return null 更改成:

returnnew Result(ShopCode.SHOP_SUCCESS.getSuccess(),ShopCode.SHOP_SUCCESS.getMessage());

把成功的信息返回。这样就实现了整个减库存的操作。

相关文章
|
SQL 消息中间件 缓存
库存扣减问题
库存扣减问题
库存扣减问题
|
SQL 缓存 NoSQL
商品秒杀情况下使用商品id做Redis缓存
商品秒杀情况下使用商品id做Redis缓存
75 0
|
SQL Java 数据库
Java开发篇 - 库存超卖,库存扣成负数?
库存扣减的时机处理,有对与不对。
291 0
|
存储 缓存 NoSQL
Redis 如何实现库存扣减操作和防止被超卖?
电商当项目经验已经非常普遍了,不管你是包装的还是真实的,起码要能讲清楚电商中常见的问题,比如库存的操作怎么防止商品被超卖
1047 0
|
缓存 NoSQL JavaScript
面试官:电商库存扣减如何设计?如何防止超卖?
面试官:电商库存扣减如何设计?如何防止超卖?
|
消息中间件 RocketMQ 开发者
扣减库存代码实现1|学习笔记
快速学习扣减库存代码实现1
164 0
扣减库存代码实现1|学习笔记
|
前端开发 Java 数据库
Seata案例-完成下单和扣除库存代码|学习笔记
快速学习Seata案例-完成下单和扣除库存代码
238 0
Seata案例-完成下单和扣除库存代码|学习笔记
|
存储 缓存 NoSQL
Redis 如何实现库存扣减操作?如何防止商品被超卖?
基于数据库单库存 基于数据库多库存 基于redis 基于redis实现扣减库存的具体实现 初始化库存回调函数(IStockCallback) 扣减库存服务(StockService)。
929 0
Redis 如何实现库存扣减操作?如何防止商品被超卖?
|
存储 缓存 NoSQL
京东一面:Redis 如何实现库存扣减操作?如何防止商品被超卖?
京东一面:Redis 如何实现库存扣减操作?如何防止商品被超卖?
507 0
京东一面:Redis 如何实现库存扣减操作?如何防止商品被超卖?
|
缓存 NoSQL JavaScript
简历上写的电商,那请问Redis 如何实现库存扣减操作和防止被超卖?
在日常开发中有很多地方都有类似扣减库存的操作,比如电商系统中的商品库存,抽奖系统中的奖品库存等。
简历上写的电商,那请问Redis 如何实现库存扣减操作和防止被超卖?