data)?$form->data:Json::decode($form->data,true); // 合法性验证 $user = User::getOne([['id'=>$form->user_id,'mall_id'=>$form->mall_id]]); if(empty($user)) throw new Exception('下单用户不存在'); if(!isset($data['num']) || (int)$data['num'] < 1) throw new Exception('请设置正确的下单数量'); $sku = BargainActive::getOne([ ['attr_id'=>$data['attr_id']], ['mall_id'=>$form->mall_id], ['id'=>$data['active_id']] ],true,[ 'goods'=>function($query){ $query->with('attr'); } ]); if(empty($sku) || empty($sku['goods'])) throw new Exception('找不到该砍价商品信息'); if(in_array($sku['goods']['goods_type'],[GoodsTypeEnum::GoodsTypePhysical])) { $this->checkAddress($form['action'],$data,$form->user_id); $form['is_address'] = 1; } $buy_num = $data['num']; // if ($buy_num > $sku['stock']) throw new Exception('商品' . $sku['goods']['goods_name'] . '库存不足! '); $bargain_order = BargainOrder::findOne(['bargain_active_id' => $data['active_id'], 'mall_id' => $form->mall_id, 'user_id' => $user['id'], 'order_status' => BargainEnum::ORDER_HANDING]); if (empty($bargain_order)) throw new \Exception('砍价订单不存在'); $bargain_price = BargainUserOrder::find() ->where(['bargain_order_id' => $bargain_order->id, 'mall_id' => $form['mall_id'], 'status' => StatusEnum::ENABLED]) ->sum('price'); $attr = $sku['goods']['attr'][0]; $cha_price = BcHelper::sub($attr['price'], $bargain_price); if($sku['type']==2&&$cha_price>$sku['min_price'])throw new \Exception('必须砍到最低价才能下单'); $order_goods = new OrderDetail(); $order_goods = $order_goods->loadDefaultValues(); $order_goods->goods_id = $sku['goods_id']; $order_goods->goods_name = $sku['goods']['goods_name']; $order_goods->goods_attr_id = $sku['attr_id']; $order_goods->sign_id = $attr['sign_id']; $order_goods->goods_attr_name = $attr['name']; $order_goods->num = $buy_num; $order_goods->cost_price = $attr['cost_price']; $order_goods->price = $attr['price'] ; $order_goods->goods_price = BcHelper::mul($order_goods->num, $cha_price); $order_goods->original_goods_price = $attr['original_price']; $order_goods->pic_url = !empty($attr['pic_url']) ? $attr['pic_url'] : $sku['goods']['cover_pic']; $order_goods->user_id = $form->user_id; $order_goods->mch_id = $sku['goods']['mch_id']; $order_goods->mall_id = $form->mall_id; // 默认数据带下单数量方便计算 $goods = $sku['goods']; $goods['number'] = $buy_num; $form->order_goods[] = ArrayHelper::toArray($order_goods); $form->sku[$sku['goods_id']] = $sku; $form->user = $user; return $form; } catch (Exception $e) { $this->setError($e->getMessage()); return false; } } /** * 获取下单类型 * @Author bing * @DateTime 2021-09-23 09:48:45 * @copyright: Copyright (c) 2020 广东七件事集团 * @return string */ public static function getType(): string{ return 'buy_now'; } }