FreightFullReduceMarketing.php 1.9 KB

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