OrderMarketingLogic.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. namespace addons\Sudoku\common\logic\order;
  3. use common\logic\order\marketing\BaseMarketing;
  4. use common\logic\order\marketing\FreeShippingMarketing;
  5. use common\traits\ErrorTrait;
  6. use Exception;
  7. /**
  8. * 订单优惠相关处理
  9. * @Author bing
  10. * @DateTime 2021-09-22 18:16:58
  11. * @copyright: Copyright (c) 2020 广东七件事集团
  12. */
  13. class OrderMarketingLogic
  14. {
  15. use ErrorTrait;
  16. public $_handlers = [
  17. FreeShippingMarketing::class, // 运费减免处理
  18. ];
  19. public function run(OrderFormLogic $form, $isNewRecord = false)
  20. {
  21. try{
  22. $extra = [];
  23. $group_order_goods = $form['group_order_goods'];
  24. foreach ($group_order_goods as &$item) {
  25. foreach ($this->_handlers as $key => $handler) {
  26. $item = $handler::compute($item, $form, $extra);
  27. if($item === false) throw new Exception($handler::getStaticError());
  28. }
  29. $form['total_pay_money'] += $item['mch_order_info']['pay_money'];// 计算总额
  30. }
  31. return $form;
  32. }catch(Exception $e){
  33. $this->setError($e->getMessage());
  34. return false;
  35. }
  36. }
  37. }