开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段):扣减库存代码实现2】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/703/detail/12418
扣减库存代码实现2
扣减库存服务端编写
首先创建接口方法,如图中所示:
然后会打开以下界面,然后在这里做一个注释,也就是扣减库存
下面针对这个方法进行一个实现,
先打开下图所示界面:
然后进行以下操作:
点击 Implement methods 后会弹出如下图所示窗口:
点击确认后会显示以下界面:
对于商品的微服务,因为要扣减库存,所以为了保证代码的见状性,要先判断当前提交的对象是否合法。
在上图30行代码下面输入代码:
if (goodsNumberLog == nuil ||
goodsNumberLog-getGoodsNumber() == null ||
goodsNumberLog.getorderId() == nu11 ||
goodsNumberLog-getGoodsNumber() == null ||
goodsNumberLog-getGoodsNumber( ).intvalue() <= o) {
}
return null;
如果 goodsNumber 等于空,
或者 goodsNumberLog-getGoodsNumber 等于空,或者订单 id 等于空,或着数量等于空,或者 getGoodsNumber().intValue 小于等于零,那么都认为现在的操作是非法的操作。
那么,输入代码:
CastException.cast(shopcode.SHOP_REQUEST_PARAMETER_VALID)
来显示当前的请求参数非法。如果参数没问题,就要进行库存的扣减。
首先,更新 trade_goods 的表格:
在这个表格,减去当前某一个商品的库存信息。
然后进行处理,
首先要将商品对象查询出来,输入代码:
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 对象注入进来:
注入进来之后,插入一条日信息,输入代码:
goodsNumberLogMapper.insert(goodsNumberLog);
整体代码如下:
这部分完成之后,返回一个结果,代码是,将 return null 更改成:
returnnew Result(ShopCode.SHOP_SUCCESS.getSuccess(),ShopCode.SHOP_SUCCESS.getMessage());
把成功的信息返回。这样就实现了整个减库存的操作。