公司要做一个商城,选用了iwebshop这套开源PHP商城系统,在检查其对商品库存量的操作时,发现iwebshop并没有对库存量操作做设计。
在需要做库存操作时(添加,减少),只是简单地用update语句set一下商品或货品表的库存字段。
当用户把商品加入购物车时,会检查一下商品的库存量,但不会修改库存量,这一步没什么问题,相关的代码在:
/classes/cart.php # getUpdateCartData() 中。
当用户确认订单后,即到 simple/cart3 这个控制器流程时,会修改库存量(减去用户购买的数量)。
但在修改库存量时却没有检查库存量:
先把一个商品加入购物车,然后到后台把对应的库存量设为0,再到购物车中提交订量,会提交成功,并且对应的库存量为0(没有变成负数)。
对库存量做操作的相关代码在:/controllers/block.php # updateStore() 中,在此方法中用PHP代码进行了一下判断:当修改后的库存量小于0时直接设为0,所以库存量没有变成负数。
iwebshop原生的库存量处理流程大概就是上面这些,在开始支付,成功支付,发货等触发点上都没有库存量的相关判断和操作。
所以,iwebshop的库存量只是一个玩具,看一看就是了,没什么实际作用。
贴一下库存量相关的表结构:
goods表store_nums字段,goods表用于保存商品ÿ
在需要做库存操作时(添加,减少),只是简单地用update语句set一下商品或货品表的库存字段。
当用户把商品加入购物车时,会检查一下商品的库存量,但不会修改库存量,这一步没什么问题,相关的代码在:
/classes/cart.php # getUpdateCartData() 中。
当用户确认订单后,即到 simple/cart3 这个控制器流程时,会修改库存量(减去用户购买的数量)。
但在修改库存量时却没有检查库存量:
先把一个商品加入购物车,然后到后台把对应的库存量设为0,再到购物车中提交订量,会提交成功,并且对应的库存量为0(没有变成负数)。
对库存量做操作的相关代码在:/controllers/block.php # updateStore() 中,在此方法中用PHP代码进行了一下判断:当修改后的库存量小于0时直接设为0,所以库存量没有变成负数。
iwebshop原生的库存量处理流程大概就是上面这些,在开始支付,成功支付,发货等触发点上都没有库存量的相关判断和操作。
所以,iwebshop的库存量只是一个玩具,看一看就是了,没什么实际作用。
贴一下库存量相关的表结构:
goods表store_nums字段,goods表用于保存商品ÿ