Master.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
  8. // +----------------------------------------------------------------------
  9. // | Author: 萤火科技 <admin@yiovo.com>
  10. // +----------------------------------------------------------------------
  11. declare (strict_types = 1);
  12. namespace app\api\service\order\source\checkout;
  13. use app\api\model\GoodsSku as GoodsSkuModel;
  14. use app\common\model\ShopGoodsSku as ShopGoodsSkuModel;
  15. /**
  16. * 订单结算台-普通商品扩展类
  17. * Class Checkout
  18. * @package app\api\service\master
  19. */
  20. class Master extends Basics
  21. {
  22. /**
  23. * 验证商品列表
  24. * @return bool
  25. */
  26. public function validateGoodsList()
  27. {
  28. foreach ($this->goodsList as $goods) {
  29. // 判断商品是否下架
  30. if ($goods['status'] != 10) {
  31. $this->error = "很抱歉,商品 [".limit_str((string)$goods['goods_name'])."] 已下架";
  32. return false;
  33. }
  34. if ($this->deliveryType == 10) {
  35. // 获取商品的sku信息
  36. $goodsSku = $this->getOrderGoodsSku($goods['goods_id'], $goods['skuInfo']['goods_sku_id']);
  37. } else { // 门店自提
  38. // 获取门店商品的sku信息
  39. if (!$this->shopId) {
  40. $this->error = "门店信息不存在";
  41. return false;
  42. }
  43. if($goods['goods_type']==20){
  44. $goodsSku = $this->getOrderGoodsSku($goods['goods_id'], $goods['skuInfo']['goods_sku_id']);
  45. }else{
  46. $goodsSku = $this->getOrderShopGoodsSku($this->shopId, $goods['goods_id'], $goods['skuInfo']['goods_sku_id']);
  47. }
  48. }
  49. // sku已不存在
  50. if (empty($goodsSku)) {
  51. $this->error = "很抱歉,商品 [".limit_str((string)$goods['goods_name'])."] sku已不存在,请重新下单";
  52. return false;
  53. }
  54. // 判断商品库存
  55. if ($goods['total_num'] == 0 || $goods['total_num'] > $goods['skuInfo']['stock_num']) {
  56. $this->error = "很抱歉,商品 [".limit_str((string)$goods['goods_name'])."] 库存不足";
  57. return false;
  58. }
  59. }
  60. return true;
  61. }
  62. /**
  63. * 获取指定的商品sku信息
  64. * @param $goodsId
  65. * @param $goodsSkuId
  66. * @return GoodsSkuModel|array|null
  67. */
  68. private function getOrderGoodsSku($goodsId, $goodsSkuId)
  69. {
  70. return GoodsSkuModel::detail($goodsId, $goodsSkuId);
  71. }
  72. /**
  73. * 获取指定的门店商品sku信息
  74. * @param $goodsId
  75. * @param $goodsSkuId
  76. * @return GoodsSkuModel|array|null
  77. */
  78. private function getOrderShopGoodsSku($shopId, $goodsId, $goodsSkuId)
  79. {
  80. return ShopGoodsSkuModel::where(['goods_id' => $goodsId,'goods_sku_id' => $goodsSkuId,'shop_id' => $shopId])->find();
  81. }
  82. }