if ($coupon->changeUsed () <= 0) 这个判断有必要吗?
原代码:
// 增加优惠券的用量,需判断返回值
if ($coupon->changeUsed() <= 0) {
throw new CouponCodeUnavailableException('该优惠券已被兑完');
}
在调用 changeUsed
方法之前,已经用 checkAvailable
检测过,说明到这里 ‘total’ 是绝对大于 'used' 的。
那在 changeUsed
方法里,->where('used', '<', $this->total)
的筛选是能通过的,而且 increment 只增加 1,所以正常来说,逻辑没有问题,肯定能成功加 1 啊。然后返回受影响的行数 1。
如果返回 0,那只能是其他系统或数据库问题了,并不是「该优惠券已被兑完」的错误。
我感觉要么不加这个判断条件,要么抛出系统内部异常。
不知道是不是还有我不知道的知识点,还有什么情况能导致返回 0 甚至负数?
推荐文章: