Commit dd3d24f1 by Vladislav

#19500 Синхронизация модификаторов

1 parent 80c9a8df
...@@ -57,6 +57,7 @@ class BidModifiersAdd extends Command ...@@ -57,6 +57,7 @@ class BidModifiersAdd extends Command
->join('bid_modifiers', 'goal_bid_modifiers.bid_modifier_id', '=', 'bid_modifiers.id') ->join('bid_modifiers', 'goal_bid_modifiers.bid_modifier_id', '=', 'bid_modifiers.id')
->whereNull('bid_modifiers.deleted_at') ->whereNull('bid_modifiers.deleted_at')
->whereNull('goal_bid_modifiers.external_id') ->whereNull('goal_bid_modifiers.external_id')
->whereNotNull('goal_bid_modifiers.dictionary_campaign_external_id')
->where(function (Builder $query) { ->where(function (Builder $query) {
$query->whereNull('goal_bid_modifiers.goal_ad_group_id') $query->whereNull('goal_bid_modifiers.goal_ad_group_id')
->orWhere(function (Builder $query) { ->orWhere(function (Builder $query) {
...@@ -64,22 +65,15 @@ class BidModifiersAdd extends Command ...@@ -64,22 +65,15 @@ class BidModifiersAdd extends Command
->whereNotNull('goal_bid_modifiers.goal_ad_group_external_id'); ->whereNotNull('goal_bid_modifiers.goal_ad_group_external_id');
}); });
}) })
->whereNotNull('goal_bid_modifiers.dictionary_campaign_external_id')
->whereIn('goal_bid_modifiers.dictionary_campaign_id', $token->dictionaryCampaignsEnabledForExternalSynchronized->pluck('id')) ->whereIn('goal_bid_modifiers.dictionary_campaign_id', $token->dictionaryCampaignsEnabledForExternalSynchronized->pluck('id'))
->select([ ->select([
'goal_bid_modifiers.id as id',
'goal_bid_modifiers.dictionary_campaign_external_id as dictionary_campaign_external_id', 'goal_bid_modifiers.dictionary_campaign_external_id as dictionary_campaign_external_id',
'goal_bid_modifiers.goal_ad_group_external_id as goal_ad_group_external_id', 'goal_bid_modifiers.goal_ad_group_external_id as goal_ad_group_external_id',
'bid_modifiers.mobile_adjustment as mobile_adjustment', 'bid_modifiers.mobile_adjustment as mobile_adjustment',
'bid_modifiers.desktop_adjustment as desktop_adjustment', 'bid_modifiers.desktop_adjustment as desktop_adjustment',
DB::raw('json_arrayagg(bid_modifiers.id) as ids'), 'bid_modifiers.demographics_adjustment as demographics_adjustment',
DB::raw('json_arrayagg(bid_modifiers.demographics_adjustment) as demographics_adjustments'), 'bid_modifiers.retargeting_adjustment as retargeting_adjustment',
DB::raw('json_arrayagg(bid_modifiers.retargeting_adjustment) as retargeting_adjustments'),
])
->groupBy([
'goal_bid_modifiers.dictionary_campaign_external_id',
'goal_bid_modifiers.goal_ad_group_external_id',
'bid_modifiers.mobile_adjustment',
'bid_modifiers.desktop_adjustment',
]) ])
->get(); ->get();
......
...@@ -154,7 +154,7 @@ class DictionaryCampaignsSyncByCampaign extends Command ...@@ -154,7 +154,7 @@ class DictionaryCampaignsSyncByCampaign extends Command
INNER JOIN dictionary_campaigns dc on dc.campaign_id = c.id INNER JOIN dictionary_campaigns dc on dc.campaign_id = c.id
LEFT JOIN ad_groups ag on c.id = ag.campaign_id AND bm.ad_group_id = ag.id LEFT JOIN ad_groups ag on c.id = ag.campaign_id AND bm.ad_group_id = ag.id
LEFT JOIN goal_ad_groups gag on dc.dictionary_id = gag.dictionary_campaign_id AND ag.id = gag.ad_group_id LEFT JOIN goal_ad_groups gag on dc.dictionary_id = gag.dictionary_campaign_id AND ag.id = gag.ad_group_id
LEFT JOIN goal_bid_modifiers gbm on bm.id = gbm.bid_modifier_id LEFT JOIN goal_bid_modifiers gbm on bm.id = gbm.bid_modifier_id and gbm.dictionary_campaign_id = dc.id
WHERE gbm.bid_modifier_id is null WHERE gbm.bid_modifier_id is null
"); ");
......
...@@ -51,18 +51,19 @@ class ProcessCallLimitedAPI implements ShouldQueue//, ShouldBeUnique ...@@ -51,18 +51,19 @@ class ProcessCallLimitedAPI implements ShouldQueue//, ShouldBeUnique
try{ try{
//резервируем на это количетсво //резервируем на это количетсво
$limitId = $limits->doRezerv($this->api, $objects); $limitId = $limits->doRezerv($this->api, $objects);
}catch(\Exception $e){
//нет свободных баллов, замораживаем до следующего часа
Log::debug($e);
$this->reRunHour();
return;
}
//вызываем очередь получения данных от АПИ //вызываем очередь получения данных от АПИ
//туда передаем сохраненный лимит //туда передаем сохраненный лимит
//там уже либо будет удален, если не удастся выполнить запрос //там уже либо будет удален, если не удастся выполнить запрос
//либо обновятся данные //либо обновятся данные
dispatch(new ProcessCallAPI($limitId, $this->api))->onQueue('api'); dispatch(new ProcessCallAPI($limitId, $this->api))->onQueue('api');
}catch(\Exception $e){
//нет свободных баллов, замораживаем до следующего часа
Log::debug($e);
$this->reRunHour();
return;
}
} }
// /** // /**
...@@ -78,6 +79,7 @@ class ProcessCallLimitedAPI implements ShouldQueue//, ShouldBeUnique ...@@ -78,6 +79,7 @@ class ProcessCallLimitedAPI implements ShouldQueue//, ShouldBeUnique
private function reRunHour(){ private function reRunHour(){
$process = new ProcessCallLimitedAPI($this->api); $process = new ProcessCallLimitedAPI($this->api);
dispatch( $process ) dispatch( $process )
->delay(now()->addMinutes(60-date("i"))); ->delay(now()->addMinutes(60-date("i")))
->onQueue('limits');
} }
} }
...@@ -50,11 +50,6 @@ class AddAdGroups extends DirectRequest ...@@ -50,11 +50,6 @@ class AddAdGroups extends DirectRequest
public function handle($response) public function handle($response)
{ {
try { try {
if (isset($response['result']['Errors'])) {
Log::debug($response['Errors']);
Log::debug($this->getParams());
}
if (!isset($response['result']['AddResults'])) { if (!isset($response['result']['AddResults'])) {
return; return;
} }
......
...@@ -51,11 +51,6 @@ class AddAds extends DirectRequest ...@@ -51,11 +51,6 @@ class AddAds extends DirectRequest
public function handle($response) public function handle($response)
{ {
try { try {
if (isset($response['result']['Errors'])) {
Log::debug($response['Errors']);
Log::debug($this->getParams());
}
if (!isset($response['result']['AddResults'])) { if (!isset($response['result']['AddResults'])) {
return; return;
} }
......
...@@ -49,11 +49,7 @@ class AddBidModifiers extends DirectRequest ...@@ -49,11 +49,7 @@ class AddBidModifiers extends DirectRequest
public function handle($response) public function handle($response)
{ {
try { try {
if (isset($response['result']['Errors'])) { Log::debug($response);
Log::debug($response['Errors']);
Log::debug($this->getParams());
}
if (!isset($response['result']['AddResults'])) { if (!isset($response['result']['AddResults'])) {
return; return;
} }
...@@ -68,10 +64,10 @@ class AddBidModifiers extends DirectRequest ...@@ -68,10 +64,10 @@ class AddBidModifiers extends DirectRequest
$external_id = (string)$add_result['Id']; $external_id = (string)$add_result['Id'];
/* @var $goalAd \stdClass */ /* @var $goalBidModifier \stdClass */
$goalAd = $this->goalBidModifiers->get($key); $goalBidModifier = $this->goalBidModifiers->get($key);
GoalBidModifier::whereIn('id', $goalAd->ids) GoalBidModifier::where('id', $goalBidModifier->id)
->update([ ->update([
'external_id' => $external_id, 'external_id' => $external_id,
'external_upload_at' => Carbon::now(), 'external_upload_at' => Carbon::now(),
...@@ -117,7 +113,7 @@ class AddBidModifiers extends DirectRequest ...@@ -117,7 +113,7 @@ class AddBidModifiers extends DirectRequest
$data['DesktopAdjustment'] = $desktop_adjustment; $data['DesktopAdjustment'] = $desktop_adjustment;
} elseif ($demographics_adjustments = array_map(function ($demographics_adjustment) { } elseif ($demographics_adjustment = @json_decode($goalBidModifier->demographics_adjustment, true)) {
unset($demographics_adjustment['Enabled']); unset($demographics_adjustment['Enabled']);
...@@ -128,24 +124,18 @@ class AddBidModifiers extends DirectRequest ...@@ -128,24 +124,18 @@ class AddBidModifiers extends DirectRequest
unset($demographics_adjustment['Age']); unset($demographics_adjustment['Age']);
} }
return $demographics_adjustment; $data['DemographicsAdjustments'] = [
$demographics_adjustment
}, array_filter(@json_decode($goalBidModifier->demographics_adjustments, true)))) { ];
$data['DemographicsAdjustments'] = $demographics_adjustments;
} elseif ($retargeting_adjustments = array_map(function ($retargeting_adjustment) { } elseif ($retargeting_adjustment = @json_decode($goalBidModifier->retargeting_adjustment, true)) {
unset($retargeting_adjustment['Accessible']); unset($retargeting_adjustment['Accessible']);
unset($retargeting_adjustment['Enabled']); unset($retargeting_adjustment['Enabled']);
return $retargeting_adjustment; $data['RetargetingAdjustments'] = [
$retargeting_adjustment
}, array_filter(@json_decode($goalBidModifier->retargeting_adjustments, true)))) { ];
$data['RetargetingAdjustments'] = $retargeting_adjustments;
} }
return $data; return $data;
......
...@@ -52,11 +52,6 @@ class AddCampaigns extends DirectRequest ...@@ -52,11 +52,6 @@ class AddCampaigns extends DirectRequest
public function handle($response) public function handle($response)
{ {
try { try {
if (isset($response['result']['Errors'])) {
Log::debug($response['Errors']);
Log::debug($this->getParams());
}
if (!isset($response['result']['AddResults'])) { if (!isset($response['result']['AddResults'])) {
return; return;
} }
......
...@@ -51,12 +51,6 @@ class AddKeywords extends DirectRequest ...@@ -51,12 +51,6 @@ class AddKeywords extends DirectRequest
public function handle($response) public function handle($response)
{ {
try { try {
if (isset($response['result']['Errors'])) {
Log::debug($response['Errors']);
Log::debug($this->getParams());
}
if (!isset($response['result']['AddResults'])) { if (!isset($response['result']['AddResults'])) {
return; return;
} }
......
...@@ -42,11 +42,6 @@ class DeleteKeywords extends DirectRequest ...@@ -42,11 +42,6 @@ class DeleteKeywords extends DirectRequest
public function handle($response) public function handle($response)
{ {
try { try {
if (isset($response['result']['Errors'])) {
Log::debug($response['Errors']);
Log::debug($this->getParams());
}
if (!isset($response['result']['DeleteResults'])) { if (!isset($response['result']['DeleteResults'])) {
return; return;
} }
......
...@@ -40,11 +40,6 @@ class UpdateAdGroups extends DirectRequest ...@@ -40,11 +40,6 @@ class UpdateAdGroups extends DirectRequest
public function handle($response) public function handle($response)
{ {
try { try {
if (isset($response['result']['Errors'])) {
Log::debug($response['Errors']);
Log::debug($this->getParams());
}
if (!isset($response['result']['UpdateResults'])) { if (!isset($response['result']['UpdateResults'])) {
return; return;
} }
......
...@@ -37,12 +37,6 @@ class UpdateAds extends DirectRequest ...@@ -37,12 +37,6 @@ class UpdateAds extends DirectRequest
public function handle($response) public function handle($response)
{ {
try { try {
if (isset($response['result']['Errors'])) {
Log::debug($response['Errors']);
Log::debug($this->getParams());
}
if (!isset($response['result']['UpdateResults'])) { if (!isset($response['result']['UpdateResults'])) {
return; return;
} }
......
...@@ -39,11 +39,6 @@ class UpdateCampaigns extends DirectRequest ...@@ -39,11 +39,6 @@ class UpdateCampaigns extends DirectRequest
public function handle($response) public function handle($response)
{ {
try { try {
if (isset($response['result']['Errors'])) {
Log::debug($response['Errors']);
Log::debug($this->getParams());
}
if (!isset($response['result']['UpdateResults'])) { if (!isset($response['result']['UpdateResults'])) {
return; return;
} }
......
...@@ -38,11 +38,6 @@ class UpdateKeywords extends DirectRequest ...@@ -38,11 +38,6 @@ class UpdateKeywords extends DirectRequest
public function handle($response) public function handle($response)
{ {
try { try {
if (isset($response['result']['Errors'])) {
Log::debug($response['Errors']);
Log::debug($this->getParams());
}
if (!isset($response['result']['UpdateResults'])) { if (!isset($response['result']['UpdateResults'])) {
return; return;
} }
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!