123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <?php
- // +----------------------------------------------------------------------
- // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
- // +----------------------------------------------------------------------
- // | Author: 萤火科技 <admin@yiovo.com>
- // +----------------------------------------------------------------------
- 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();
- }
- }
|