|
|
@@ -34,11 +34,11 @@ class Main extends Basics
|
|
|
return false;
|
|
|
}
|
|
|
// 判断商品库存
|
|
|
- if (!$this->validateGoodsSeckillStock()) {
|
|
|
+ if (!$this->validateGoodsStock()) {
|
|
|
return false;
|
|
|
}
|
|
|
// 验证商品限购
|
|
|
- if (!$this->validateLimitNum()) {
|
|
|
+ if (!$this->validateRestrict(OrderSourceEnum::MAIN)) {
|
|
|
return false;
|
|
|
}
|
|
|
return true;
|
|
|
@@ -63,7 +63,7 @@ class Main extends Basics
|
|
|
* 判断商品库存数量
|
|
|
* @return bool
|
|
|
*/
|
|
|
- private function validateGoodsSeckillStock(): bool
|
|
|
+ private function validateGoodsStock(): bool
|
|
|
{
|
|
|
foreach ($this->goodsList as $goods) {
|
|
|
if ($goods['total_num'] > $goods['skuInfo']['stock_num']) {
|
|
|
@@ -73,40 +73,4 @@ class Main extends Basics
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
-
|
|
|
- /**
|
|
|
- * 验证商品限购
|
|
|
- * @return bool
|
|
|
- */
|
|
|
- public function validateLimitNum(): bool
|
|
|
- {
|
|
|
- foreach ($this->goodsList as $goods) {
|
|
|
- // 不限购
|
|
|
- if (!$goods['is_restrict']) return true;
|
|
|
- // 商品单次限购数量
|
|
|
- if ($goods['total_num'] > $goods['restrict_single']) {
|
|
|
- $this->error = "很抱歉,商品 [{$goods['goods_name']}] 限购{$goods['restrict_single']}件,请修改购买数量";
|
|
|
- return false;
|
|
|
- }
|
|
|
- // 获取用户已下单的件数(未取消 订单来源)
|
|
|
- $alreadyBuyNum = OrderService::getGoodsBuyNum($this->user['user_id'], $goods['goods_id'], OrderSourceEnum::MAIN);
|
|
|
- // 情况1: 已购买0件, 实际想购买5件
|
|
|
- if ($alreadyBuyNum == 0 && $goods['total_num'] > $goods['restrict_total']) {
|
|
|
- $this->error = "很抱歉,商品 [{$goods['goods_name']}] 限购{$goods['restrict_total']}件,请修改购买数量";
|
|
|
- return false;
|
|
|
- }
|
|
|
- // 情况2: 已购买3件, 实际想购买1件
|
|
|
- if ($alreadyBuyNum >= $goods['restrict_total']) {
|
|
|
- $this->error = "很抱歉,商品 [{$goods['goods_name']}] 限购{$goods['restrict_total']}件,您已购买过{$alreadyBuyNum}件";
|
|
|
- return false;
|
|
|
- }
|
|
|
- // 情况3: 已购买2件, 实际想购买2件
|
|
|
- if (($alreadyBuyNum + $goods['total_num']) > $goods['restrict_total']) {
|
|
|
- $diffNum = ($alreadyBuyNum + $goods['total_num']) - $goods['restrict_total'];
|
|
|
- $this->error = "很抱歉,商品 [{$goods['goods_name']}] 限购{$goods['restrict_total']}件,您最多能再购买{$diffNum}件";
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- return true;
|
|
|
- }
|
|
|
}
|