Main.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2017~2024 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\service\Order as OrderService;
  14. use app\common\enum\goods\Status as GoodsStatusEnum;
  15. use app\common\enum\order\OrderSource as OrderSourceEnum;
  16. /**
  17. * 订单结算台-普通商品扩展类
  18. * Class Main
  19. * @package app\api\service\order\source\checkout
  20. */
  21. class Main extends Basics
  22. {
  23. /**
  24. * 验证商品列表
  25. * @return bool
  26. */
  27. public function validateGoodsList(): bool
  28. {
  29. // 验证商品是否下架
  30. if (!$this->validateGoodsStatus()) {
  31. return false;
  32. }
  33. // 判断商品库存
  34. if (!$this->validateGoodsStock()) {
  35. return false;
  36. }
  37. // 验证商品限购
  38. if (!$this->validateRestrict(OrderSourceEnum::MAIN)) {
  39. return false;
  40. }
  41. return true;
  42. }
  43. /**
  44. * 判断商品是否下架
  45. * @return bool
  46. */
  47. private function validateGoodsStatus(): bool
  48. {
  49. foreach ($this->goodsList as $goods) {
  50. if ($goods['is_delete'] || $goods['status'] == GoodsStatusEnum::OFF_SALE) {
  51. $this->error = "很抱歉,商品 [{$goods['goods_name']}] 已下架";
  52. return false;
  53. }
  54. }
  55. return true;
  56. }
  57. /**
  58. * 判断商品库存数量
  59. * @return bool
  60. */
  61. private function validateGoodsStock(): bool
  62. {
  63. foreach ($this->goodsList as $goods) {
  64. if ($goods['total_num'] > $goods['skuInfo']['stock_num']) {
  65. $this->error = "很抱歉,商品 [{$goods['goods_name']}] 库存不足";
  66. return false;
  67. }
  68. }
  69. return true;
  70. }
  71. }