request->post(); $params['mall_id'] = $this->mall_id; $params['user_id'] = $this->user_id; $orderFormLogic = new OrderFormLogic(); $form = $orderFormLogic->getDefaultform($this->mall_id, $this->user_id); $form->attributes = Yii::$app->request->post(); $form['action'] = AppEnum::ACTION_PREVIEW; !empty($form->shipping_type) && $form->shipping_type = ShippingTypeEnum::LOGISTICS; // 初始化订单数据 $orderInitDataLogic = new OrderInitDataLogic(); $form = $orderInitDataLogic->execute($form, PreviewTypeEnum::BUY_NOW); if ($form === false) return $this->error($orderInitDataLogic->getError()); // 购买验证 $orderLimitLogic = new OrderLimitLogic(); $form = $orderLimitLogic->run($form); if ($form === false) return $this->error($orderLimitLogic->getError()); // 获取收货地址 $address_info = UserAddress::getUserAddress($this->user_id, $form->address_id); $form->address_id = $address_info['id']; // 营销 $orderMarketingLogic = new OrderMarketingLogic($form['score_goods']['use_coupon']); $form = $orderMarketingLogic->run($form); if ($form === false) return $this->error($orderMarketingLogic->getError()); $group_order_goods = $form['group_order_goods']; $score_goods = $form['score_goods']; if(!empty($form['sku'])){ $supply_shop = new OrderSupplyLogic(); foreach ($form['sku'] as $sku){ if(!empty($sku['goods']['goods_source'])){ $form = $supply_shop->supplyShop($this->mall_id, $form, $sku['goods']['goods_source']); if ($form === false) continue; } } } if ($form === false) return $this->error($supply_shop->getError()); $marketing = $form['marketing']; $pay_type_list = \Yii::$app->services->pay->getEnablePayment($this->mall_id, $this->platform); $shipping_type_list = ShippingTypeEnum::getMap(); !empty($score_goods['pay_score']) && $total_pay_money[] = $score_goods['pay_score'] . $score_goods['score_name']; !empty($form['total_pay_money']) && $total_pay_money[] = '¥'. $form['total_pay_money']; unset($marketing['deduct']['score']); $info = compact('group_order_goods', 'marketing', 'address_info', 'pay_type_list', 'shipping_type_list'); $info['total_pay_money'] = implode('+', $total_pay_money); $info['pay_money'] = $form['total_pay_money']; $info['pay_score'] = bcadd($score_goods['pay_score'], 0, 2); $info['total_pay_score'] = bcadd($score_goods['pay_score'], 0, 2); $info['is_address'] = $form['is_address'] ?? 0; return $this->success('操作成功', $info); } /** * 创建订单 * @Author: lun * @DateTime: 2022/1/11 0011 10:30 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void */ public function actionCreate() { $params = \Yii::$app->request->post(); $params['mall_id'] = $this->mall_id; $params['user_id'] = $this->user_id; $orderFormLogic = new OrderFormLogic(); $form = $orderFormLogic->getDefaultform($this->mall_id, $this->user_id); $form->attributes = Yii::$app->request->post(); $form['action'] = AppEnum::ACTION_CREATE; !empty($form->shipping_type) && $form->shipping_type = ShippingTypeEnum::LOGISTICS; // 初始化订单数据 $orderInitDataLogic = new OrderInitDataLogic(); $form = $orderInitDataLogic->execute($form, PreviewTypeEnum::BUY_NOW); if ($form === false) return $this->error($orderInitDataLogic->getError()); // 购买验证 $orderLimitLogic = new OrderLimitLogic(); $form = $orderLimitLogic->run($form); if ($form === false) return $this->error($orderLimitLogic->getError(), [],$orderLimitLogic->getCodeError()['code']); // 获取收货地址 $address_info = UserAddress::getUserAddress($this->user_id, $form->address_id); $form->address_id = $address_info['id']; // 营销减免活动 $orderMarketingLogic = new OrderMarketingLogic($form['score_goods']['use_coupon']); $form = $orderMarketingLogic->run($form, true); if ($form === false) return $this->error($orderMarketingLogic->getError()); if(!empty($form['sku'])){ $supply_shop = new OrderSupplyLogic(); foreach ($form['sku'] as $sku){ if(!empty($sku['goods']['goods_source'])){ $form = $supply_shop->supplyShop($this->mall_id, $form, $sku['goods']['goods_source']); if ($form === false) continue; } } } if ($form === false) return $this->error($supply_shop->getError()); $res = Order::createOrder($form); if ($res === false) return $this->error(Order::getStaticError()); $res['total_pay_money'] = '0'; //获取订单需支付金额 if($res['transaction']){ $trade = \Yii::$app->services->pay->getByTradeId($res['transaction']['trade_id']); $res['total_pay_money'] = $trade ? $trade->pay_fee : 0; $res['total_pay_money'] = '¥'.$res['total_pay_money']; } return $this->success('操作成功', $res); } }