关于库存的判断逻辑问题

bug问题 · successgo · 于 5年前 发布 · 1609 次阅读

https://github.com/fecshop/yii2_fecshop/blob/master/services/product/Stock.php#L461

在这一行代码处,不明白为何这样写 elseif ,直接写 else 不就可以了吗?

$product_qty 变量未定义,直接因为出错,return false 出去了。

这里的初衷是不是,如果有自定义属性去 product_custom_option_qty 查库存,如果没有自定义属性,去 product_flat_qty

本文由 successgdc 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 5 条回复
Fecmall#15年前 0 个赞

恩,这是个bug

 } elseif (($product_qty > 0) && ($product_qty > $sale_qty)) {

改成

	} else {

下面的代码中的 $product_qty 变量没有定义。

 } elseif (($product_qty > 0) && ($product_qty > $sale_qty)) {
                $productFlatQty = $this->_flatQtyModel->find()->where([
                    'product_id' => $product_id
                ])->one();
                if ($productFlatQty['qty']) {
                    if ($productFlatQty['qty'] >= $sale_qty) {
                        return true;
                    } else {
                        Yii::$service->helper->errors->add('Product Id:'.$product['_id'].' , Product inventory is less than '.$sale_qty);
                    }
                } else {
                    Yii::$service->helper->errors->add('Product Id:'.$product['_id'].' , The product has no qty');
                }
            }

Fecmall#25年前 0 个赞

更改一下提交个PR吧

successgo#35年前 0 个赞

收到,排查了一天,利用 xdebug 调试的。

像这里写了没有闭环的 if 语句块,容易生产 Bug.

Fecmall#45年前 0 个赞

恩,if语句要有最终的else处理,这里的代码有问题。

另外 $product_qty,这个变量没有定义,直接判断肯定无法通过,这里是之前调整代码结构导致的一个没有发现的bug

successgo#55年前 1 个赞

已提交了 PR.

这个隐藏的 bug 不好排查。

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics