OrderMarketingLogic.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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 addons\ValetOrder\common\logic\order\marketing\FreeShippingMarketing;
  6. use addons\ValetOrder\common\logic\order\marketing\FreightFullReduceMarketing;
  7. use Exception;
  8. /**
  9. * 订单优惠相关处理
  10. * @Author bing
  11. * @DateTime 2021-09-22 18:16:58
  12. * @copyright: Copyright (c) 2020 广东七件事集团
  13. */
  14. class OrderMarketingLogic extends BaseOrderMarketing {
  15. public function getHandlers(){
  16. return [
  17. FreeShippingMarketing::class, // 运费减免处理
  18. ];
  19. }
  20. /**
  21. * 运行
  22. * @param $form
  23. * @param bool $isNewRecord 创建记录
  24. * @return object|mixed
  25. */
  26. public function run( $form, $isNewRecord = false)
  27. {
  28. try{
  29. $extra = [];
  30. $group_order_goods = $form['group_order_goods'];
  31. $handlers =$this->getHandlers();
  32. foreach ($group_order_goods as &$item) {
  33. // 运费减免处理
  34. foreach ($handlers as $key => $handler) {
  35. /** @var BaseMarketing $class*/
  36. $item = $handler::compute($item,$form,$extra);
  37. if($item === false) throw new Exception($handler::getStaticError());
  38. }
  39. $item = FreightFullReduceMarketing::compute($item, $form);
  40. $form['total_pay_money'] = round($form['total_pay_money']+$item['mch_order_info']['pay_money'],2);// 计算总额
  41. }
  42. $form['group_order_goods'] = $group_order_goods;
  43. $form = AddonsCoupon::getCanUseCouponList($form,$isNewRecord);
  44. return $form;
  45. }catch(Exception $e){
  46. $this->setError($e->getMessage());
  47. return false;
  48. }
  49. }
  50. }