Skip to content
GitLab
Explore
Projects
Groups
Topics
Snippets
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Andrey Ovchinnikov
WB-autobidder
Commits
a430e44f
Commit
a430e44f
authored
1 year ago
by
ovchinnikov_av
Browse files
Options
Download
Patches
Plain Diff
Логика для аналитики;
parent
61538856
main
autopayments-hotfix
bid_stats
choosing-an-active-product
correction-of-item-numbering
crm-2918
dev
fix-to-many-times-or-run-too-long
hard-strategy-based-on-the-active-product
optimization_v1
queue-fix
select-strategy
soft_bust
soft_strategy
soft_strategy-v2
soft_strategy-v3-soft-and_hard
soft_strategy-v3-soft-and_hard-fix-31-01
test
2.1.0
2.0.0
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
Application/app/Application/Services/StatsService.php
+22
-0
Application/app/Application/Services/StatsService.php
Application/app/Http/Controllers/Bidder/WidgetStatsController.php
+51
-0
...ion/app/Http/Controllers/Bidder/WidgetStatsController.php
Application/routes/api.php
+2
-0
Application/routes/api.php
with
75 additions
and
0 deletions
Application/app/Application/Services/StatsService.php
+
22
−
0
View file @
a430e44f
...
...
@@ -46,4 +46,26 @@ class StatsService
return
$results
;
}
public
function
widgetStats
(
string
$keyword
,
int
$nm_id
,
int
$range
)
{
$db
=
DB
::
connection
(
'clickhouse'
)
->
getClient
();
$rawQuery
=
"SELECT MAX(created_at) AS created_at, cpm, promo_position, position
FROM parser.products
WHERE keyword = :keyword AND id = :nm_id
GROUP BY cpm, promo_position, position
ORDER BY created_at ASC
LIMIT 30;"
;
$bindings
=
[
'keyword'
=>
$keyword
,
'nm_id'
=>
$nm_id
,
];
$results
=
$db
->
select
(
$rawQuery
,
$bindings
);
return
$results
;
}
}
This diff is collapsed.
Click to expand it.
Application/app/Http/Controllers/Bidder/WidgetStatsController.php
0 → 100644
+
51
−
0
View file @
a430e44f
<?php
declare
(
strict_types
=
1
);
namespace
App\Http\Controllers\Bidder
;
use
App\Application\Services\StatsService
;
use
App\Domain\Bidder\Bidder
;
use
App\Domain\Search\SearchResult
;
use
Illuminate\Http\JsonResponse
;
use
Illuminate\Http\Request
;
use
Illuminate\Support\Facades\Validator
;
class
WidgetStatsController
{
public
function
__construct
()
{
}
public
function
getStats
(
Request
$request
,
StatsService
$statsService
,
SearchResult
$searchResult
)
:
JsonResponse
{
$validator
=
Validator
::
make
(
$request
->
json
()
->
all
(),
[
'advert_id'
=>
'required|integer'
,
'nm_id'
=>
'required|integer'
,
'range'
=>
'integer'
,
]);
if
(
$validator
->
fails
())
{
return
response
()
->
json
([
'success'
=>
false
,
'errors'
=>
$validator
->
errors
()],
400
);
}
$requestData
=
$validator
->
validated
();
$advert_id
=
$requestData
[
'advert_id'
];
$nm_id
=
$requestData
[
'nm_id'
];
$range
=
$requestData
[
'range'
]
??
24
;
$bidder
=
Bidder
::
where
(
'advert_id'
,
$advert_id
)
->
firstOrFail
();
$stats
=
$statsService
->
widgetStats
(
$bidder
->
masterPhrase
->
first
()
->
keyword
,
$nm_id
,
$range
);
$res
=
[];
foreach
(
$stats
as
$k
=>
$stat
)
{
$res
[
$k
]
=
$stat
;
}
if
(
$stats
)
{
return
response
()
->
json
([
'success'
=>
true
,
'stats'
=>
$res
],
200
);
}
else
{
return
response
()
->
json
([
'success'
=>
false
],
404
);
}
}
}
This diff is collapsed.
Click to expand it.
Application/routes/api.php
+
2
−
0
View file @
a430e44f
...
...
@@ -5,6 +5,7 @@ use App\Http\Controllers\Bidder\BidderParametersController;
use
App\Http\Controllers\Bidder\BidderStateController
;
use
App\Http\Controllers\Bidder\BidderStatsController
;
use
App\Http\Controllers\Bidder\BidderStatusInfoController
;
use
App\Http\Controllers\Bidder\WidgetStatsController
;
use
App\Http\Controllers\Stats\BidStatsController
;
use
App\Http\Controllers\Stats\PaymentStatsController
;
use
Illuminate\Http\Request
;
...
...
@@ -34,6 +35,7 @@ Route::prefix('v0')->group(function () {
Route
::
post
(
'/keyword-exclude'
,
[
BidderStateController
::
class
,
'keywordExclude'
]);
Route
::
post
(
'/set-master-phrase'
,
[
BidderStateController
::
class
,
'setMasterPhrase'
]);
Route
::
post
(
'/stats'
,
[
BidderStatsController
::
class
,
'getStats'
]);
Route
::
post
(
'/stats-widget'
,
[
WidgetStatsController
::
class
,
'getStats'
]);
Route
::
post
(
'/get-financial-parameters/{bidder}'
,
[
BidderFinancialParametersController
::
class
,
'getParameters'
]);
Route
::
post
(
'/set-financial-parameters/{bidder}'
,
[
BidderFinancialParametersController
::
class
,
'setParameters'
]);
Route
::
post
(
'/make-payment/{bidder}'
,
[
BidderFinancialParametersController
::
class
,
'makePayment'
]);
...
...
This diff is collapsed.
Click to expand it.
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Topics
Snippets