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 = $orderMarketingLogic->run($form); if ($form === false) { return $this->error($orderMarketingLogic->getError()); } $marketing = $form['marketing']; $group_order_goods = array_values($form['group_order_goods']); $pay_type_list = \Yii::$app->services->pay->getEnablePayment($this->mall_id, $this->platform); $shipping_type_list = ShippingTypeEnum::getMap(); !empty($form['total_pay_money']) && $total_pay_money[] = '¥'. $form['total_pay_money']; $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['is_address'] = $form['is_address'] ?? 0; return $this->success('操作成功', $info); } /** * 生成订单 */ public function actionCreate() { $orderFormLogic = new OrderFormLogic(); $form = $orderFormLogic->getDefaultform($this->mall_id, $this->user_id); $form->attributes = Yii::$app->request->post(); $form['action'] = AppEnum::ACTION_CREATE; // 初始化订单数据 $orderInitDataLogic = new OrderInitDataLogic(); $form = $orderInitDataLogic->execute($form, $form->type); if ($form === false) return $this->error($orderInitDataLogic->getError()); // 购买限制验证 $orderLimitLogic = new OrderLimitLogic(); $form = $orderLimitLogic->run($form); if ($form === false) return $this->error($orderLimitLogic->getError()); // 营销减免活动 $orderMarketingLogic = new OrderMarketingLogic(); $form = $orderMarketingLogic->run($form, true); if ($form === false) return $this->error($orderMarketingLogic->getError()); $activity_id = $form['activity']['id'] ?? 0; //订单添加来源 $form = OrderLogic::createBeforeCheck($form); if($form === false){ return $this->error(OrderLogic::getStaticError()); } $res = Order::createOrder($form); if ($res === false) { // 因为在创建之前已经扣减库存,如果没有创建成功,则恢复库存 ActivityLogic::incrStock($activity_id); return $this->error(Order::getStaticError()); } //添加将对应的订单ID , 活动ID添加秒杀记录表 OrderLogic::createAfterHandle($res['transaction']['order_ids'],$activity_id,$this->mall_id, $this->user_id); return $this->success('操作成功', $res); } }