where('sync_status', 0) ->get(); if ($leads->isEmpty()) { $output->writeln('没有需要同步的 fb_leads(sync_status = 0)'); return self::SUCCESS; } $now = time(); Db::transaction(function () use ($leads, $now, $output) { $insert = []; $ids = []; foreach ($leads as $lead) { $leadArr = (array)$lead; $insert[] = $this->mapLeadToInquiry($leadArr, $now); // 假设 fb_leads 的主键字段名为 id $ids[] = $leadArr['id']; } if ($insert) { // 1) 写入 inquiry_log Db::table('inquiry_log')->insert($insert); // 2) 回写 fb_leads 的同步状态 Db::table('fb_leads') ->whereIn('id', $ids) ->update([ 'sync_status' => 1, 'updated_at' => $now, ]); $output->writeln('已导入 ' . count($insert) . ' 条数据到 inquiry_log,并更新 fb_leads.sync_status = 1'); } }); return self::SUCCESS; } /** * 将一条 fb_leads 记录映射为 inquiry_log 记录 */ protected function mapLeadToInquiry(array $lead, int $now): array { // 联系方式 $email = (string)($lead['email'] ?? ''); $tel = (string)($lead['phone'] ?? ''); $wa = $tel; // 先用电话号码当 WhatsApp // 根据电话或 WhatsApp 区号识别国家 $countryId = PhoneCountryHelper::detectCountryId($tel ?: $wa); // 所有默认值按你的要求设置 $data = [ 'order_no' => $this->orderNum(), 'enter_user_id' => static::DEFAULT_ENTER_USER_ID, 'recipient' => 0, 'quality' => 2, 'channel' => static::DEFAULT_CHANNEL, 'email' => $email, 'tel' => $tel, 'whatsapp' => $wa, 'country' => $countryId ?: 0, 'contacts' => (string)($lead['full_name'] ?? ''), 'content' => $this->buildContentHtml($lead), 'status' => 0, 'r_time' => 0, 't_time' => 0, 'sync_crm' => 0, 'created_at' => $now, 'updated_at' => $now, ]; return $data; } /** * 生成订单号 */ protected function orderNum(): string { return 'SN' . date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT); } /** * 根据 fb_leads 的字段拼出富文本内容 */ protected function buildContentHtml(array $lead): string { $e = function ($v) { return htmlspecialchars((string)$v, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); }; $lines = []; if (!empty($lead['car_model'])) { $lines[] = '

意向车型:' . $e($lead['car_model']) . '

'; } if (!empty($lead['car_quantity']) || !empty($lead['car_quantity_text'])) { $qty = $lead['car_quantity'] ?? $lead['car_quantity_text'] ?? ''; $lines[] = '

意向数量:' . $e($qty) . '

'; } if (!empty($lead['favorite_color'])) { $lines[] = '

意向颜色:' . $e($lead['favorite_color']) . '

'; } if (!empty($lead['usage_type'])) { $lines[] = '

用途:' . $e($lead['usage_type']) . '

'; } if (!empty($lead['seat_preference'])) { $lines[] = '

座位数偏好:' . $e($lead['seat_preference']) . '

'; } $lines[] = '
'; $lines[] = '

广告与表单信息:

'; $lines[] = '

平台:' . $e($lead['platform'] ?? '') . '

'; $lines[] = '

Campaign:' . $e($lead['campaign_name'] ?? '') . ' (#' . $e($lead['campaign_id'] ?? '') . ')

'; $lines[] = '

Adset:' . $e($lead['adset_name'] ?? '') . ' (#' . $e($lead['adset_id'] ?? '') . ')

'; $lines[] = '

Ad:' . $e($lead['ad_name'] ?? '') . ' (#' . $e($lead['ad_id'] ?? '') . ')

'; $lines[] = '

Form:' . $e($lead['form_name'] ?? '') . ' (#' . $e($lead['form_id'] ?? '') . ')

'; $lines[] = '
'; $lines[] = '

Meta 信息:

'; $lines[] = '

Lead ID:' . $e($lead['fb_lead_id'] ?? '') . '

'; $lines[] = '

FB 创建时间原始值:' . $e($lead['fb_created_time'] ?? '') . '

'; if (!empty($lead['inbox_url'])) { $url = $e($lead['inbox_url']); $lines[] = '

Inbox 链接:' . $url . '

'; } return implode("\n", $lines); } }