AssembleCheckPayService.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace app\api\service\order\checkpay;
  3. use app\common\enum\product\DeductStockTypeEnum;
  4. use app\common\model\plus\assemble\AssembleSku as AssembleSkuModel;
  5. /**
  6. * 拼团订单支付检查服务类
  7. */
  8. class AssembleCheckPayService extends CheckPayService
  9. {
  10. /**
  11. * 判断订单是否允许付款
  12. */
  13. public function checkOrderStatus($order)
  14. {
  15. // 判断订单状态
  16. if (!$this->checkOrderStatusCommon($order)) {
  17. return false;
  18. }
  19. // 判断商品状态、库存
  20. if (!$this->checkProductStatus($order['product'])) {
  21. return false;
  22. }
  23. return true;
  24. }
  25. /**
  26. * 判断商品状态、库存 (未付款订单)
  27. */
  28. protected function checkProductStatus($productList)
  29. {
  30. foreach ($productList as $product) {
  31. // 拼团商品sku信息
  32. var_dump($product->toArray());
  33. $assembleProductSku = AssembleSkuModel::detail($product['sku_source_id'], ['product']);
  34. $assembleProduct = $assembleProductSku['product'];
  35. // sku是否存在
  36. if ($product['spec_type'] == 20 && empty($assembleProductSku)) {
  37. $this->error = "很抱歉,商品 [{$product['product_name']}] sku已不存在,请重新下单";
  38. return false;
  39. }
  40. // 判断商品是否下架
  41. if (empty($assembleProduct)) {
  42. $this->error = "很抱歉,商品 [{$product['product_name']}] 不存在或已删除";
  43. return false;
  44. }
  45. // 付款减库存
  46. if ($product['deduct_stock_type'] == DeductStockTypeEnum::PAYMENT && $product['total_num'] > $assembleProductSku['assemble_stock']) {
  47. $this->error = "很抱歉,商品 [{$product['product_name']}] 库存不足";
  48. return false;
  49. }
  50. }
  51. return true;
  52. }
  53. }