BaseOrderMarketing.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace addons\ValetOrder\common\logic\order;
  3. use addons\Coupon\common\models\AddonsCoupon;
  4. use addons\ValetOrder\common\logic\order\marketing\BaseMarketing;
  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. abstract class BaseOrderMarketing{
  14. use ErrorTrait;
  15. abstract public function getHandlers();
  16. /**
  17. * 运行
  18. * @param $form
  19. * @param bool $isNewRecord 创建记录
  20. * @return object|mixed
  21. */
  22. public function run( $form, $isNewRecord = false)
  23. {
  24. try{
  25. $extra = [];
  26. $group_order_goods = $form['group_order_goods'];
  27. $handlers = $this->getHandlers();
  28. foreach ($group_order_goods as &$item) {
  29. // 运费减免处理
  30. foreach ($handlers as $key => $handler) {
  31. /** @var BaseMarketing $class*/
  32. $item = $handler::compute($item,$form,$extra);
  33. if($item === false) throw new Exception($handler::getStaticError());
  34. }
  35. $form['total_pay_money'] = round($form['total_pay_money']+$item['mch_order_info']['pay_money'],2);// 计算总额
  36. }
  37. $form['group_order_goods'] = $group_order_goods;
  38. $form = AddonsCoupon::getCanUseCouponList($form,$isNewRecord);
  39. return $form;
  40. }catch(Exception $e){
  41. $this->setError($e->getMessage());
  42. return false;
  43. }
  44. }
  45. }