Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Письменов Дмитрий Иванович
/
yourroomads
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit ff62e9ce
authored
Jun 25, 2021
by
Vladislav
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#19499 Загрузка модификаторов ставок
1 parent
3da4755f
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
73 additions
and
30 deletions
app/Console/Commands/BidModifiersAdd.php
app/Console/Commands/DictionaryCampaignsSyncByCampaign.php
app/Models/Pivots/DictionaryCampaign.php
app/Models/Pivots/GoalAdGroup.php
app/Models/Pivots/GoalBidModifier.php
app/Service/Requests/Direct/AddAdGroups.php
app/Service/Requests/Direct/AddBidModifiers.php
app/Service/Requests/Direct/AddCampaigns.php
app/Service/Requests/Direct/GetBidModifiers.php
app/Console/Commands/BidModifiersAdd.php
View file @
ff62e9c
...
@@ -53,7 +53,7 @@ class BidModifiersAdd extends Command
...
@@ -53,7 +53,7 @@ class BidModifiersAdd extends Command
$factory
=
APIRequest
::
getInstance
(
API
::
YANDEX
);
$factory
=
APIRequest
::
getInstance
(
API
::
YANDEX
);
$factory
->
setToken
(
$token
);
$factory
->
setToken
(
$token
);
$goal
Ad
s
=
DB
::
table
(
'goal_bid_modifiers'
)
$goal
BidModifier
s
=
DB
::
table
(
'goal_bid_modifiers'
)
->
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'
)
...
@@ -67,19 +67,25 @@ class BidModifiersAdd extends Command
...
@@ -67,19 +67,25 @@ class BidModifiersAdd extends Command
->
whereNotNull
(
'goal_bid_modifiers.dictionary_campaign_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_id as dictionary_campaign_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'
,
'bid_modifiers.demographics_adjustment as demographics_adjustment'
,
DB
::
raw
(
'json_arrayagg(bid_modifiers.id) as ids'
),
'bid_modifiers.retargeting_adjustment as retargeting_adjustment'
,
DB
::
raw
(
'json_arrayagg(bid_modifiers.demographics_adjustment) as demographics_adjustments'
),
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
();
$factory
->
getRequest
(
'
Ad
s'
,
'add'
)
$factory
->
getRequest
(
'
BidModifier
s'
,
'add'
)
->
call
([
->
call
([
'goal
Ads'
=>
$goalAd
s
,
'goal
BidModifiers'
=>
$goalBidModifier
s
,
]);
]);
}
}
...
...
app/Console/Commands/DictionaryCampaignsSyncByCampaign.php
View file @
ff62e9c
...
@@ -152,8 +152,9 @@ class DictionaryCampaignsSyncByCampaign extends Command
...
@@ -152,8 +152,9 @@ class DictionaryCampaignsSyncByCampaign extends Command
FROM bid_modifiers bm
FROM bid_modifiers bm
INNER JOIN campaigns c on bm.campaign_id = c.id
INNER JOIN campaigns c on bm.campaign_id = c.id
INNER JOIN dictionary_campaigns dc on dc.campaign_id = c.id
INNER JOIN dictionary_campaigns dc on dc.campaign_id = c.id
LEFT JOIN goal_ad_groups gag on dc.dictionary_id = gag.dictionary_campaign_id
LEFT JOIN ad_groups ag on c.id = ag.campaign_id AND bm.ad_group_id = ag.id
LEFT JOIN goal_bid_modifiers gbm on bm.id = gbm.bid_modifier_id AND (gbm.goal_ad_group_id = gag.id OR gbm.goal_ad_group_id IS NULL)
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
WHERE gbm.bid_modifier_id is null
WHERE gbm.bid_modifier_id is null
"
);
"
);
...
...
app/Models/Pivots/DictionaryCampaign.php
View file @
ff62e9c
...
@@ -451,7 +451,7 @@ class DictionaryCampaign extends Pivot
...
@@ -451,7 +451,7 @@ class DictionaryCampaign extends Pivot
public
function
goalBidModifiers
()
public
function
goalBidModifiers
()
{
{
return
$this
->
hasMany
(
BidModifier
::
class
,
'dictionary_campaign_id'
);
return
$this
->
hasMany
(
Goal
BidModifier
::
class
,
'dictionary_campaign_id'
);
}
}
public
function
goalBidModifiersForNotExternal
()
public
function
goalBidModifiersForNotExternal
()
...
...
app/Models/Pivots/GoalAdGroup.php
View file @
ff62e9c
...
@@ -3,6 +3,7 @@
...
@@ -3,6 +3,7 @@
namespace
App\Models\Pivots
;
namespace
App\Models\Pivots
;
use
App\Models\AdGroup
;
use
App\Models\AdGroup
;
use
App\Models\BidModifier
;
use
App\Models\Variable
;
use
App\Models\Variable
;
use
Illuminate\Database\Eloquent\Builder
;
use
Illuminate\Database\Eloquent\Builder
;
use
Illuminate\Database\Eloquent\Relations\Pivot
;
use
Illuminate\Database\Eloquent\Relations\Pivot
;
...
@@ -202,4 +203,9 @@ class GoalAdGroup extends Pivot
...
@@ -202,4 +203,9 @@ class GoalAdGroup extends Pivot
return
$this
->
hasMany
(
GoalAdvertisement
::
class
,
'goal_ad_group_id'
);
return
$this
->
hasMany
(
GoalAdvertisement
::
class
,
'goal_ad_group_id'
);
}
}
public
function
goalBidModifiers
()
{
return
$this
->
hasMany
(
BidModifier
::
class
,
'goal_ad_group_id'
);
}
}
}
app/Models/Pivots/GoalBidModifier.php
View file @
ff62e9c
...
@@ -8,7 +8,7 @@ use Illuminate\Database\Eloquent\Relations\Pivot;
...
@@ -8,7 +8,7 @@ use Illuminate\Database\Eloquent\Relations\Pivot;
use
Illuminate\Database\Eloquent\SoftDeletes
;
use
Illuminate\Database\Eloquent\SoftDeletes
;
/**
/**
* App\Models\Pivots\
BidModifiers
* App\Models\Pivots\
GoalBidModifier
*
*
* @property int $id
* @property int $id
* @property int|null $external_id
* @property int|null $external_id
...
...
app/Service/Requests/Direct/AddAdGroups.php
View file @
ff62e9c
...
@@ -84,6 +84,10 @@ class AddAdGroups extends DirectRequest
...
@@ -84,6 +84,10 @@ class AddAdGroups extends DirectRequest
'goal_ad_group_external_id'
=>
$external_id
,
'goal_ad_group_external_id'
=>
$external_id
,
]);
]);
$goalAdGroup
->
goalBidModifiers
()
->
update
([
'goal_ad_group_external_id'
=>
$external_id
,
]);
}
}
}
catch
(
\Exception
$e
)
{
}
catch
(
\Exception
$e
)
{
Log
::
debug
(
$e
);
Log
::
debug
(
$e
);
...
...
app/Service/Requests/Direct/AddBidModifiers.php
View file @
ff62e9c
...
@@ -16,7 +16,7 @@ class AddBidModifiers extends DirectRequest
...
@@ -16,7 +16,7 @@ class AddBidModifiers extends DirectRequest
protected
$max_count
=
1000
;
protected
$max_count
=
1000
;
protected
$timestamp
;
protected
$timestamp
;
/* @var Collection|
GoalBidModifier[]|BidModifier[]|
\stdClass[] */
/* @var Collection|\stdClass[] */
protected
$goalBidModifiers
;
protected
$goalBidModifiers
;
public
function
call
(
$params
=
null
)
public
function
call
(
$params
=
null
)
...
@@ -49,7 +49,6 @@ class AddBidModifiers extends DirectRequest
...
@@ -49,7 +49,6 @@ class AddBidModifiers extends DirectRequest
public
function
handle
(
$response
)
public
function
handle
(
$response
)
{
{
try
{
try
{
\Log
::
debug
(
$response
);
if
(
isset
(
$response
[
'result'
][
'Errors'
]))
{
if
(
isset
(
$response
[
'result'
][
'Errors'
]))
{
Log
::
debug
(
$response
[
'Errors'
]);
Log
::
debug
(
$response
[
'Errors'
]);
Log
::
debug
(
$this
->
getParams
());
Log
::
debug
(
$this
->
getParams
());
...
@@ -69,10 +68,10 @@ class AddBidModifiers extends DirectRequest
...
@@ -69,10 +68,10 @@ class AddBidModifiers extends DirectRequest
$external_id
=
(
string
)
$add_result
[
'Id'
];
$external_id
=
(
string
)
$add_result
[
'Id'
];
/* @var $goalAd
GoalBidModifier|BidModifier|
\stdClass */
/* @var $goalAd \stdClass */
$goalAd
=
$this
->
goalBidModifiers
->
get
(
$key
);
$goalAd
=
$this
->
goalBidModifiers
->
get
(
$key
);
GoalBidModifier
::
whereI
d
(
$goalAd
->
id
)
GoalBidModifier
::
whereI
n
(
'id'
,
$goalAd
->
ids
)
->
update
([
->
update
([
'external_id'
=>
$external_id
,
'external_id'
=>
$external_id
,
'external_upload_at'
=>
Carbon
::
now
(),
'external_upload_at'
=>
Carbon
::
now
(),
...
@@ -100,7 +99,7 @@ class AddBidModifiers extends DirectRequest
...
@@ -100,7 +99,7 @@ class AddBidModifiers extends DirectRequest
$this
->
setParams
([
$this
->
setParams
([
'BidModifiers'
=>
$this
->
goalBidModifiers
->
map
(
function
(
$goalBidModifier
)
{
'BidModifiers'
=>
$this
->
goalBidModifiers
->
map
(
function
(
$goalBidModifier
)
{
/* @var $goalBidModifier
GoalBidModifier|BidModifier|
\stdClass */
/* @var $goalBidModifier \stdClass */
$data
=
[
$data
=
[
'CampaignId'
=>
$goalBidModifier
->
dictionary_campaign_external_id
,
'CampaignId'
=>
$goalBidModifier
->
dictionary_campaign_external_id
,
...
@@ -110,20 +109,43 @@ class AddBidModifiers extends DirectRequest
...
@@ -110,20 +109,43 @@ class AddBidModifiers extends DirectRequest
$data
[
'AdGroupId'
]
=
$goalBidModifier
->
goal_ad_group_external_id
;
$data
[
'AdGroupId'
]
=
$goalBidModifier
->
goal_ad_group_external_id
;
}
}
if
(
$mobile_adjustment
=
@
json_decode
(
$goalBidModifier
->
mobile_adjustment
))
{
if
(
$mobile_adjustment
=
@
json_decode
(
$goalBidModifier
->
mobile_adjustment
,
true
))
{
$data
[
'MobileAdjustment'
]
=
$mobile_adjustment
;
$data
[
'MobileAdjustment'
]
=
$mobile_adjustment
;
}
if
(
$desktop_adjustment
=
@
json_decode
(
$goalBidModifier
->
desktop_adjustment
))
{
}
elseif
(
$desktop_adjustment
=
@
json_decode
(
$goalBidModifier
->
desktop_adjustment
,
true
))
{
$data
[
'DesktopAdjustment'
]
=
$desktop_adjustment
;
$data
[
'DesktopAdjustment'
]
=
$desktop_adjustment
;
}
if
(
$demographics_adjustment
=
@
json_decode
(
$goalBidModifier
->
demographics_adjustment
))
{
}
elseif
(
$demographics_adjustments
=
array_map
(
function
(
$demographics_adjustment
)
{
$data
[
'DemographicsAdjustments'
]
=
$demographics_adjustment
;
unset
(
$demographics_adjustment
[
'Enabled'
]);
if
(
is_null
(
$demographics_adjustment
[
'Gender'
]))
{
unset
(
$demographics_adjustment
[
'Gender'
]);
}
}
if
(
is_null
(
$demographics_adjustment
[
'Age'
]))
{
unset
(
$demographics_adjustment
[
'Age'
]);
}
return
$demographics_adjustment
;
},
array_filter
(
@
json_decode
(
$goalBidModifier
->
demographics_adjustments
,
true
))))
{
$data
[
'DemographicsAdjustments'
]
=
$demographics_adjustments
;
}
elseif
(
$retargeting_adjustments
=
array_map
(
function
(
$retargeting_adjustment
)
{
unset
(
$retargeting_adjustment
[
'Accessible'
]);
unset
(
$retargeting_adjustment
[
'Enabled'
]);
return
$retargeting_adjustment
;
},
array_filter
(
@
json_decode
(
$goalBidModifier
->
retargeting_adjustments
,
true
))))
{
if
(
$retargeting_adjustment
=
@
json_decode
(
$goalBidModifier
->
retargeting_adjustment
))
{
$data
[
'RetargetingAdjustments'
]
=
$retargeting_adjustments
;
$data
[
'RetargetingAdjustments'
]
=
$retargeting_adjustment
;
}
}
return
$data
;
return
$data
;
...
...
app/Service/Requests/Direct/AddCampaigns.php
View file @
ff62e9c
...
@@ -90,6 +90,10 @@ class AddCampaigns extends DirectRequest
...
@@ -90,6 +90,10 @@ class AddCampaigns extends DirectRequest
'dictionary_campaign_external_id'
=>
$external_id
,
'dictionary_campaign_external_id'
=>
$external_id
,
]);
]);
$dictionaryCampaign
->
goalBidModifiers
()
->
update
([
'dictionary_campaign_external_id'
=>
$external_id
,
]);
}
}
}
catch
(
\Exception
$e
)
{
}
catch
(
\Exception
$e
)
{
Log
::
debug
(
$e
);
Log
::
debug
(
$e
);
...
...
app/Service/Requests/Direct/GetBidModifiers.php
View file @
ff62e9c
...
@@ -114,12 +114,12 @@ class GetBidModifiers extends DirectRequest
...
@@ -114,12 +114,12 @@ class GetBidModifiers extends DirectRequest
'campaign_id'
=>
$campaign
->
getKey
(),
'campaign_id'
=>
$campaign
->
getKey
(),
'ad_group_id'
=>
$adGroup
?
$adGroup
->
getKey
()
:
null
,
'ad_group_id'
=>
$adGroup
?
$adGroup
->
getKey
()
:
null
,
'level'
=>
$bid_modifier
[
'
Status
'
],
'level'
=>
$bid_modifier
[
'
Level
'
],
'type'
=>
$bid_modifier
[
'
Stat
e'
],
'type'
=>
$bid_modifier
[
'
Typ
e'
],
'mobile_adjustment'
=>
$bid_modifier
[
'MobileAdjustment'
],
'mobile_adjustment'
=>
$bid_modifier
[
'MobileAdjustment'
]
??
null
,
'desktop_adjustment'
=>
$bid_modifier
[
'DesktopAdjustment'
],
'desktop_adjustment'
=>
$bid_modifier
[
'DesktopAdjustment'
]
??
null
,
'demographics_adjustment'
=>
$bid_modifier
[
'DemographicsAdjustment'
],
'demographics_adjustment'
=>
$bid_modifier
[
'DemographicsAdjustment'
]
??
null
,
'retargeting_adjustment'
=>
$bid_modifier
[
'RetargetingAdjustment'
],
'retargeting_adjustment'
=>
$bid_modifier
[
'RetargetingAdjustment'
]
??
null
,
'updated_self'
=>
null
,
'updated_self'
=>
null
,
];
];
...
...
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment