<?php
namespace app\api\service\order\source\checkout;
use app\api\service\sharp\Order as SharpOrderService;
class Sharp extends Basics
{
public function validateGoodsList()
{
if (!$this->validateGoodsStatus()) {
return false;
}
if (!$this->validateLimitNum()) {
return false;
}
if (!$this->validateGoodsSeckillStock()) {
return false;
}
return true;
}
private function validateGoodsStatus()
{
foreach ($this->goodsList as $goods) {
if ($goods['is_delete'] || !$goods['status']) {
$this->error = "很抱歉,商品 [{$goods['goods_name']}] 已下架";
return false;
}
}
return true;
}
private function validateGoodsSeckillStock()
{
foreach ($this->goodsList as $goods) {
if ($goods['total_num'] > $goods['goods_sku']['seckill_stock']) {
$this->error = "很抱歉,商品 [{$goods['goods_name']}] 库存不足";
return false;
}
}
return true;
}
public function validateLimitNum()
{
foreach ($this->goodsList as $goods) {
if ($goods['limit_num'] <= 0) return true;
$alreadyBuyNum = SharpOrderService::getAlreadyBuyNum($this->user['user_id'], $goods['goods_id']);
if ($alreadyBuyNum == 0 && $goods['total_num'] > $goods['limit_num']) {
$this->error = "很抱歉,该商品限购{$goods['limit_num']}件,请修改购买数量";
return false;
}
if ($alreadyBuyNum >= $goods['limit_num']) {
$this->error = "很抱歉,该商品限购{$goods['limit_num']}件,您当前已下单{$alreadyBuyNum}件,无法购买";
return false;
}
if (($alreadyBuyNum + $goods['total_num']) > $goods['limit_num']) {
$diffNum = ($alreadyBuyNum + $goods['total_num']) - $goods['limit_num'];
$this->error = "很抱歉,该商品限购{$goods['limit_num']}件,您最多能再购买{$diffNum}件";
return false;
}
}
return true;
}
}