| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- <?php
- namespace addons\Purchase\common\logic\order;
- use addons\Purchase\common\enums\PurchaseEnum;
- use addons\Purchase\common\logic\order\marketing\ScoreMarketing;
- use common\logic\order\BaseOrderMarketing;
- use common\logic\order\marketing\BaseMarketing;
- use common\logic\order\marketing\CouponMarketing;
- use common\logic\order\marketing\FreeShippingMarketing;
- /**
- * 订单优惠相关处理
- * @Author bing
- * @DateTime 2021-09-22 18:16:58
- * @copyright: Copyright (c) 2020 广东七件事集团
- */
- class OrderMarketingLogic extends BaseOrderMarketing
- {
- public $use_coupon;
- public function __construct($use_coupon = 0)
- {
- $this->use_coupon = $use_coupon;
- }
- public function getHandlers()
- {
- // TODO: Implement getHandlers() method.
- $data = [
- FreeShippingMarketing::class, // 运费减免处理
- ScoreMarketing::class, // 积分处理
- ];
- return empty($this->use_coupon) ? $data : array_merge($data, [CouponMarketing::class]);
- }
- /**
- * 运行
- * @param $form
- * @param bool $isNewRecord 创建记录
- * @return object|mixed
- */
- public function run( $form, $isNewRecord = false)
- {
- try{
- $extra = [];
- $group_order_goods = $form['group_order_goods'];
- $handlers = $this->getHandlers();
- foreach ($group_order_goods as &$item) {
- $item['mch_order_info']['marketing_type'] = PurchaseEnum::ADDONS_NAME;
- // 运费减免处理
- foreach ($handlers as $key => $handler) {
- /** @var BaseMarketing $class*/
- $item = $handler::compute($item,$form,$extra);
- if($item === false) throw new \Exception($handler::getStaticError());
- }
- $form['total_pay_money'] = round($form['total_pay_money'] + ($item['mch_order_info']['pay_money'] ?? 0), 2);// 计算总额
- $form['total_pay_score'] = round($form['total_pay_score'] + ($item['mch_order_info']['score'] ?? 0), 2);// 计算总额
- }
- $form['group_order_goods'] = $group_order_goods;
- return $form;
- }catch(\Exception $e){
- $this->setError($e->getMessage());
- return false;
- }
- }
- }
|