FreightFullReduceMarketing.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace addons\ValetOrder\common\logic\order\marketing;
  3. use common\helpers\ArrayHelper;
  4. use common\logic\order\marketing\BaseMarketing;
  5. use Yii;
  6. /**
  7. * 邮费满减
  8. */
  9. class FreightFullReduceMarketing extends BaseMarketing{
  10. public function execute( $form){}
  11. /**
  12. * @notes: 邮费满减计算,暂时不计算多商户
  13. * @param $item
  14. * @param $form
  15. * @return mixed
  16. * @author: lun
  17. * @Time: 2022/12/14 13:56
  18. */
  19. public static function compute($item, &$form)
  20. {
  21. $reduce = 0;// 减免M金额
  22. $first_goods_id = key($item['goods']);
  23. if (!empty($form['sku'][$first_goods_id]['goods']['goods_source'])) return $item;// 供应链商品直接跳过
  24. $shipping_fee = $item['mch_order_info']['shipping_money'] ?? 0;
  25. if ($shipping_fee && empty($item['mch_order_info']['mch_id'])) {
  26. $config = Yii::$app->services->setting->mall->get($form['mall_id'], 'freight');
  27. if (!empty($config['is_open'])) {
  28. $arr = json_decode($config['full_reduce'], true);
  29. $arr = ArrayHelper::arraySort($arr, 'full', 'desc');
  30. foreach ($arr as $val) {
  31. if ($val['full'] <= $shipping_fee) {
  32. $reduce = $val['reduce'];
  33. break;
  34. }
  35. }
  36. if ($reduce > $shipping_fee) $reduce = $shipping_fee;
  37. }
  38. if ($reduce) {
  39. $item['mch_order_info']['reduce_shipping_money'] = $reduce;
  40. $item['mch_order_info']['pay_money'] = $item['mch_order_info']['pay_money'] - $reduce;
  41. $prev_freight_reduce = $form->marketing['deduct']['freight_reduce']['money'] ?? 0;
  42. $form->marketing['deduct']['freight_reduce'] = ['name' => "满邮减免", 'money' => $reduce + $prev_freight_reduce];
  43. // $form['total_pay_money'] = round($form['total_pay_money'] - $reduce,2);// 计算总额
  44. }
  45. }
  46. return $item;
  47. }
  48. }