data) ? $form->data : Json::decode($form->data, true); $activity = LuckyGroupActivity::getOne([['id'=>$data['activity_id']],['mall_id'=>$form->mall_id]],true); if(empty($activity)) throw new Exception('活动不存在'); if($activity['status']!=StatusEnum::ENABLED) throw new Exception('活动未开启'); $time = time(); $date = date('Y-m-d',$time); if($timestrtotime($date.' '.$activity['end_time']))throw new Exception('活动已结束'); // 合法性验证 $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 = GoodsAttr::getOne([['<>', 'status', StatusEnum::DELETE], ['id' => $data['attr_id']]], true, ['goods', 'goods.extra']); if (empty($sku) || empty($sku['goods'])) throw new Exception('找不到产品信息或者产品已删除'); $lucky_group_goods = LuckyGroupGoods::getOne([['goods_id' => $sku['goods_id'], 'activity_id' => $data['activity_id']]]); if (empty($lucky_group_goods)) throw new Exception('找不到幸运拼团商品'); $group_order = LuckyGroupOrder::getOne([['user_id' => $form->user_id, 'goods_id' => $sku['goods_id'], 'group_status' => LuckyGroupEnum::GROUP_JOINING]]); if ($group_order) throw new Exception('参团中,请勿重复参团'); if (in_array($sku['goods']['goods_type'], [GoodsTypeEnum::GoodsTypePhysical])) { $data['mall_id'] = $form->mall_id; // $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'] . '库存不足! '); $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['id']; $order_goods->sign_id = $sku['sign_id']; $order_goods->goods_attr_name = $sku['name']; $order_goods->num = $buy_num; $order_goods->cost_price = $sku['cost_price']; $order_goods->price = $sku['price']; $order_goods->goods_price = BcHelper::mul($order_goods->num, $order_goods->price); $order_goods->original_goods_price = $order_goods->goods_price; $order_goods->pic_url = !empty($sku['pic_url']) ? $sku['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; $order_goods->marketing_type = $data['marketing_type'] ?? '0'; $order_goods->marketing_id = $data['marketing_id'] ?? 0; // 默认数据带下单数量方便计算 $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 * @return string * @copyright: Copyright (c) 2020 广东七件事集团 */ public static function getType(): string { return 'buy_now'; } }