Commit 79ecfc30 by Vladislav

#19472 Синхронизация групп с целевыми

1 parent d3ae55a0
...@@ -49,9 +49,13 @@ class ProcessCallAPI implements ShouldQueue ...@@ -49,9 +49,13 @@ class ProcessCallAPI implements ShouldQueue
//только их и запрашиваем //только их и запрашиваем
$limit = \App\Models\Limits::find($this->limitId); $limit = \App\Models\Limits::find($this->limitId);
$maxObjects = $limits::NAN;
if ($limit->spent) {
$limits = Limits::getInstance($this->api->getToken()); $limits = Limits::getInstance($this->api->getToken());
$maxObjects = $limits->countObjectsLimit($this->api); $maxObjects = $limits->countObjectsLimitReserve($this->api, $limit);
}
if ($maxObjects and $maxObjects !== $limits::NAN && $this->api->getObjectsCount() > $maxObjects) { if ($maxObjects and $maxObjects !== $limits::NAN && $this->api->getObjectsCount() > $maxObjects) {
//те на которые не хватило баллов помещаем в очередь //те на которые не хватило баллов помещаем в очередь
......
...@@ -96,6 +96,19 @@ class Limits implements \App\Service\Contract\Limits { ...@@ -96,6 +96,19 @@ class Limits implements \App\Service\Contract\Limits {
} }
/** /**
* @param Contract\APIRequest $request
* @param \App\Models\Limits $limits
*
* @return int
* возвращает сколько объектов можем обработать на резервированные баллы
*/
function countObjectsLimitReserve(\App\Service\Contract\APIRequest $request, \App\Models\Limits $limit): int
{
$cost = $this->limitCosts->getCostObject($request);
return floor(($limit->spent - $this->limitCosts->getCostCall($request)) / $cost);
}
/**
* @param APIRequest $request * @param APIRequest $request
* @param int $objects * @param int $objects
* @return int * @return int
......
...@@ -78,7 +78,7 @@ class CheckChanges extends DirectRequest ...@@ -78,7 +78,7 @@ class CheckChanges extends DirectRequest
$ad_group_id = (string)$ad_group_id; $ad_group_id = (string)$ad_group_id;
if ($this->getToken()->isMain()) { if ($this->getToken()->isMain()) {
$adGroup = AdGroup::where('external_id', $ad_group_id)->first(); $adGroup = AdGroup::firstWhere('external_id', $ad_group_id);
if ($adGroup) { if ($adGroup) {
$adGroup->update([ $adGroup->update([
...@@ -92,7 +92,7 @@ class CheckChanges extends DirectRequest ...@@ -92,7 +92,7 @@ class CheckChanges extends DirectRequest
]); ]);
} }
} else { } else {
$goalAdGroup = GoalAdGroup::with('dictionaryCampaign')->firstWhere('external_id', $ad_group_id)->first(); $goalAdGroup = GoalAdGroup::with('dictionaryCampaign')->firstWhere('external_id', $ad_group_id);
if ($goalAdGroup && $goalAdGroup->dictionaryCampaign && $goalAdGroup->dictionaryCampaign->updated) { if ($goalAdGroup && $goalAdGroup->dictionaryCampaign && $goalAdGroup->dictionaryCampaign->updated) {
$goalAdGroup->update([ $goalAdGroup->update([
...@@ -111,7 +111,7 @@ class CheckChanges extends DirectRequest ...@@ -111,7 +111,7 @@ class CheckChanges extends DirectRequest
$ad_id = (string)$ad_id; $ad_id = (string)$ad_id;
if ($this->getToken()->isMain()) { if ($this->getToken()->isMain()) {
$advertisement = Advertisement::where('external_id', $ad_id)->first(); $advertisement = Advertisement::firstWhere('external_id', $ad_id);
if ($advertisement) { if ($advertisement) {
$advertisement->update([ $advertisement->update([
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!