Files
2025-03-05 14:02:29 +09:00

216 lines
7.4 KiB
PHP

<?php
namespace App\Controllers\Advertisement;
use App\Controllers\BaseController;
use App\Models\Api\AdLeadModel;
use App\ThirdParty\facebook_api\ZenithFB;
use App\ThirdParty\googleads_api\ZenithGG;
use App\ThirdParty\moment_api\ZenithKM;
use CodeIgniter\CLI\CLI;
class AdLeadController extends BaseController
{
protected $adlead, $facebook, $google, $kakao;
public function __construct()
{
$this->adlead = model(AdLeadModel::class);
$this->facebook = new ZenithFB();
$this->google = new ZenithGG();
$this->kakao = new ZenithKM();
}
public function sendToEventLead()
{
CLI::clearScreen();
CLI::write("잠재고객 업데이트를 시작합니다.", "yellow");
$this->sendToEventLeadFromKakao();
$this->sendToEventLeadFromFacebook();
//$this->sendToEventLeadFromGoogle();
CLI::write("잠재고객 업데이트가 완료되었습니다.", "yellow");
}
private function sendToEventLeadFromKakao()
{
$moment_ads = $this->adlead->getBizFormUserResponse();
$step = 1;
$total = $moment_ads->getNumRows();
if(!$total){
return null;
}
CLI::write("카카오 모먼트 잠재고객 업데이트를 시작합니다.", "yellow");
foreach($moment_ads->getResultArray() as $row){
CLI::showProgress($step++, $total);
if (!empty($row['code'])) {
$title = trim($row['code']);
}else{
$title = $row['name'];
}
$landing = $this->kakao->landingGroup($title, $row['landingUrl'] ?? '');
if(is_null($landing)) {
CLI::print('비즈폼 매칭 오류 발생 : ' . $row . '');
continue;
}
//전화번호
$phone = str_replace("+82010", "010", $row['phoneNumber']);
$phone = str_replace("+8210", "010", $phone);
$phone = preg_replace("/^8210(.+)$/", "010$1", $phone);
$phone = str_replace("+82 10", "010", $phone);
$phone = str_replace("-", "", $phone);
if ($row['email'] == '없음') $row['email'] = '';
//추가질문
$questions = [];
$add = [];
$responses = json_decode($row['responses'], 1);
$acnt = 1;
$addr = $add1 = $add2 = $add3 = $add4 = $add5 = null;
foreach ($responses as $response) {
$qs = $this->adlead->getBizformQuestion($row['bizFormId'], $response['bizformItemId']);
if(is_null($qs)) continue;
if (!key_exists($qs['id'], $questions))
$questions[$qs['id']] = $qs['title'];
$add[] = ${'add' . $acnt} = $questions[$response['bizformItemId']] . '::' . $response['response'];
$acnt++;
}
$result = [];
if ($landing['event_seq']) {
$result['event_seq'] = $landing['event_seq'];
$result['site'] = $landing['site']??null;
$result['name'] = $row['nickname'];
$result['email'] = $row['email']??'';
$result['gender'] = $row['gender']??null;
$result['age'] = $row['age'] ?? 0;
$result['phone'] = $phone;
$result['add1'] = $add1;
$result['add2'] = $add2;
$result['add3'] = $add3;
$result['add4'] = $add4;
$result['add5'] = $add5;
$result['addr'] = $addr;
$result['reg_timestamp'] = strtotime($row['submitAt']);
$result['lead_id'] = $row['id']??null;
$result['encUserId'] = $row['encUserId'];
$result['bizFormId'] = $row['bizFormId'];
}
if (is_array($result) && count($result)) {
$this->adlead->insertEventLeadKakao($result);
}
}
}
private function sendToEventLeadFromFacebook()
{
$facebook_ads = $this->adlead->getFBAdLead();
$step = 1;
$total = count($facebook_ads);
if(!$total){
return null;
}
CLI::write("페이스북 잠재고객 업데이트를 시작합니다.", "yellow");
foreach($facebook_ads as $row){
CLI::showProgress($step++, $total);
if (!empty($row['code'])) {
$title = trim($row['code']);
}else{
$title = $row['ad_name'];
}
$landing = $this->facebook->landingGroup($title);
//이름
$full_name = $row['full_name'];
if (!$full_name || $full_name == null) {
$full_name = trim($row['first_name'] . ' ' . $row['last_name']);
}
//성별
if ($row['gender'] == "female") {
$gender = "여자";
} elseif ($row['gender'] == "male") {
$gender = "남자";
} else {
$gender = $row['gender'];
}
//나이
if ($row['date_of_birth']) {
$birthyear = date("Y", strtotime($row['date_of_birth']));
$nowyear = date("Y");
$age = $nowyear - $birthyear + 1;
} else {
$age = "";
}
//전화번호
$phone = str_replace("+82010", "010", $row['phone_number']);
$phone = str_replace("+8210", "010", $phone);
$phone = str_replace("-", "", $phone);
//주소
if ($row['street_address']) {
$addr = $row['street_address'];
} else {
$addr = "";
}
//추가질문
preg_match_all("/0 => \'(.*)\',/iU", $row['field_data'], $match);
if (isset($match[1][0])) {
$add1 = $match[1][0];
} else {
$add1 = "";
}
if (isset($match[1][1])) {
$add2 = $match[1][1];
} else {
$add2 = "";
}
if (isset($match[1][2])) {
$add3 = $match[1][2];
} else {
$add3 = "";
}
if (isset($match[1][3])) {
$add4 = $match[1][3];
} else {
$add4 = "";
}
if (isset($match[1][4])) {
$add5 = $match[1][4];
} else {
$add5 = "";
}
if ($landing['event_seq']) {
$result['event_seq'] = $landing['event_seq'];
$result['site'] = $landing['site'];
$result['name'] = addslashes($full_name);
$result['gender'] = $gender;
$result['age'] = $age ?? 0;
$result['phone'] = $phone;
$result['add1'] = addslashes($add1);
$result['add2'] = addslashes($add2);
$result['add3'] = addslashes($add3);
$result['add4'] = addslashes($add4);
$result['add5'] = addslashes($add5);
$result['addr'] = $addr;
$result['reg_date'] = $row['created_time'];
$result['id'] = $row['id'];
if (is_array($result)) {
$this->adlead->insertEventLeadFacebook($result);
}
}
}
}
private function sendToEventLeadFromGoogle()
{
}
}