BaseOrderMarketing.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace common\logic\order;
  3. use addons\Coupon\AddonConfig;
  4. use addons\Coupon\common\models\AddonsCoupon;
  5. use common\logic\order\marketing\BaseMarketing;
  6. use common\logic\order\marketing\CouponMarketing;
  7. use common\logic\order\marketing\FreeShippingMarketing;
  8. use common\logic\order\marketing\GiveMarketing;
  9. use common\logic\order\marketing\MemberPriceMarketing;
  10. use common\logic\order\marketing\ScoreMarketing;
  11. use common\logic\order\marketing\FullReduceMarketing;
  12. use common\models\mall\MallAddons;
  13. use common\models\order\OrderMarketing;
  14. use common\models\user\UserAddress;
  15. use common\traits\ErrorTrait;
  16. use Exception;
  17. use Yii;
  18. use yii\helpers\Json;
  19. /**
  20. * 订单优惠相关处理
  21. * @Author bing
  22. * @DateTime 2021-09-22 18:16:58
  23. * @copyright: Copyright (c) 2020 广东七件事集团
  24. */
  25. abstract class BaseOrderMarketing{
  26. use ErrorTrait;
  27. abstract public function getHandlers();
  28. /**
  29. * 运行
  30. * @param $form
  31. * @param bool $isNewRecord 创建记录
  32. * @return object|mixed
  33. */
  34. public function run( $form, $isNewRecord = false)
  35. {
  36. try{
  37. $extra = [];
  38. $group_order_goods = array_values($form['group_order_goods']);
  39. $handlers = $this->getHandlers();
  40. foreach ($group_order_goods as &$item) {
  41. // 运费减免处理
  42. foreach ($handlers as $key => $handler) {
  43. /** @var BaseMarketing $class*/
  44. $item = $handler::compute($item,$form,$extra);
  45. if($item === false) throw new Exception($handler::getStaticError());
  46. }
  47. $form['total_pay_money'] = round($form['total_pay_money']+$item['mch_order_info']['pay_money'],2);// 计算总额
  48. }
  49. $form['group_order_goods'] = $group_order_goods;
  50. $form = AddonsCoupon::getCanUseCouponList($form,$isNewRecord);
  51. return $form;
  52. }catch(Exception $e){
  53. $this->setError($e->getMessage());
  54. return false;
  55. }
  56. }
  57. }