// +---------------------------------------------------------------------- declare (strict_types = 1); namespace app\api\service\order\source\checkout; use app\api\model\GoodsSku as GoodsSkuModel; use app\common\model\ShopGoodsSku as ShopGoodsSkuModel; /** * 订单结算台-普通商品扩展类 * Class Checkout * @package app\api\service\master */ class Master extends Basics { /** * 验证商品列表 * @return bool */ public function validateGoodsList() { foreach ($this->goodsList as $goods) { // 判断商品是否下架 if ($goods['status'] != 10) { $this->error = "很抱歉,商品 [".limit_str((string)$goods['goods_name'])."] 已下架"; return false; } if ($this->deliveryType == 10) { // 获取商品的sku信息 $goodsSku = $this->getOrderGoodsSku($goods['goods_id'], $goods['skuInfo']['goods_sku_id']); } else { // 门店自提 // 获取门店商品的sku信息 if (!$this->shopId) { $this->error = "门店信息不存在"; return false; } if($goods['goods_type']==20){ $goodsSku = $this->getOrderGoodsSku($goods['goods_id'], $goods['skuInfo']['goods_sku_id']); }else{ $goodsSku = $this->getOrderShopGoodsSku($this->shopId, $goods['goods_id'], $goods['skuInfo']['goods_sku_id']); } } // sku已不存在 if (empty($goodsSku)) { $this->error = "很抱歉,商品 [".limit_str((string)$goods['goods_name'])."] sku已不存在,请重新下单"; return false; } // 判断商品库存 if ($goods['total_num'] == 0 || $goods['total_num'] > $goods['skuInfo']['stock_num']) { $this->error = "很抱歉,商品 [".limit_str((string)$goods['goods_name'])."] 库存不足"; return false; } } return true; } /** * 获取指定的商品sku信息 * @param $goodsId * @param $goodsSkuId * @return GoodsSkuModel|array|null */ private function getOrderGoodsSku($goodsId, $goodsSkuId) { return GoodsSkuModel::detail($goodsId, $goodsSkuId); } /** * 获取指定的门店商品sku信息 * @param $goodsId * @param $goodsSkuId * @return GoodsSkuModel|array|null */ private function getOrderShopGoodsSku($shopId, $goodsId, $goodsSkuId) { return ShopGoodsSkuModel::where(['goods_id' => $goodsId,'goods_sku_id' => $goodsSkuId,'shop_id' => $shopId])->find(); } }