mirror of
https://github.com/janickiy/yii2-nomer
synced 2025-03-09 15:39:59 +00:00
add files to project
This commit is contained in:
commit
5cac498444
3729 changed files with 836998 additions and 0 deletions
241
modules/api/controllers/TelegramController.php
Normal file
241
modules/api/controllers/TelegramController.php
Normal file
|
@ -0,0 +1,241 @@
|
|||
<?php
|
||||
|
||||
namespace app\modules\api\controllers;
|
||||
|
||||
use app\components\SearchHelper;
|
||||
use app\models\RequestResult;
|
||||
use app\models\ResultCache;
|
||||
use app\models\SearchRequest;
|
||||
use app\models\Settings;
|
||||
use app\models\TmpVk;
|
||||
use app\models\Vk;
|
||||
use yii\helpers\ArrayHelper;
|
||||
use yii\helpers\Json;
|
||||
use yii\rest\Controller;
|
||||
use yii\web\Response;
|
||||
|
||||
class TelegramController extends Controller
|
||||
{
|
||||
public function actionIndex($phone)
|
||||
{
|
||||
\Yii::$app->response->format = Response::FORMAT_JSON;
|
||||
|
||||
$searchRequest = new SearchRequest();
|
||||
$searchRequest->phone = $phone;
|
||||
$searchRequest->source_id = SearchRequest::SOURCE_TELEGRAM;
|
||||
$searchRequest->save();
|
||||
|
||||
$id = $searchRequest->id;
|
||||
|
||||
$result = [
|
||||
"phones" => [$phone],
|
||||
"emails" => [],
|
||||
"profiles" => [],
|
||||
"public" => [],
|
||||
"phone" => $phone,
|
||||
"open" => [],
|
||||
"elements" => [],
|
||||
"valid" => []
|
||||
];
|
||||
|
||||
$profiles = [];
|
||||
|
||||
$ch = curl_init('http://ssd.nomer.io/api/'.$phone.'?token=NWBpdeqbbAFJMVYJU6XAfhyydeyhgX');
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$response = curl_exec($ch);
|
||||
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
|
||||
if($httpCode == 200) { // Все ок, берем данные
|
||||
$response = Json::decode($response);
|
||||
foreach($response as $r) {
|
||||
switch($r["type"]) {
|
||||
case "phone":
|
||||
$result["phones"][] = $r["data"];
|
||||
break;
|
||||
case "profile_id":
|
||||
$result["profiles"][] = $r["data"];
|
||||
$profiles[] = $r["data"];
|
||||
if(isset($r["isValid"]) && $r["isValid"] == 1) {
|
||||
$result["valid"][] = $r["data"];
|
||||
}
|
||||
break;
|
||||
case "email":
|
||||
if (strpos($r["data"], '@') !== false) {
|
||||
$result["emails"][] = $r["data"];
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$result["phones"] = array_unique($result["phones"]);
|
||||
|
||||
foreach($result["phones"] as $_phone) {
|
||||
$vk = TmpVk::find()->where(['phone' => $phone])->all();
|
||||
foreach($vk as $v) {
|
||||
$profile_id = $v["id"];
|
||||
$result["public"][] = $profile_id;
|
||||
$profiles[] = $profile_id;
|
||||
}
|
||||
}
|
||||
|
||||
$vkrows = Vk::find()->where(["or",
|
||||
["phone1" => $phone],
|
||||
["phone2" => $phone],
|
||||
])->all();
|
||||
|
||||
foreach ($vkrows as $vkrow) {
|
||||
$profiles[] = $vkrow["id"];
|
||||
// $result["public"][] = $vkrow["id"];
|
||||
$result["open"][] = $vkrow["id"];
|
||||
$result["phones"][] = $vkrow["phone1"];
|
||||
$result["phones"][] = $vkrow["phone2"];
|
||||
$result["phones"][] = $vkrow["phone3"];
|
||||
$result["phones"][] = $vkrow["phone4"];
|
||||
}
|
||||
|
||||
$result["emails"] = array_unique($result["emails"]);
|
||||
$result["phones"] = array_unique(array_filter($result["phones"]));
|
||||
|
||||
$phones = $result['phones'];
|
||||
|
||||
// Получаем оператора и регион
|
||||
$operator = SearchHelper::Operator($searchRequest->phone);
|
||||
|
||||
$requestResult = RequestResult::find()->where(["request_id" => $id, "type_id" => ResultCache::TYPE_OPERATOR])->one();
|
||||
|
||||
if(is_null($requestResult)) {
|
||||
$requestResult = new RequestResult();
|
||||
$requestResult->request_id = $id;
|
||||
$requestResult->type_id = ResultCache::TYPE_OPERATOR;
|
||||
$requestResult->data = Json::encode($operator);
|
||||
$requestResult->index = 0;
|
||||
$requestResult->save();
|
||||
}
|
||||
|
||||
$items = [];
|
||||
|
||||
// Telegram
|
||||
$telegramItems = SearchHelper::Telegram($phones);
|
||||
|
||||
$requestResult = RequestResult::find()->where(["request_id" => $id, "type_id" => ResultCache::TYPE_TELEGRAM])->one();
|
||||
|
||||
if(is_null($requestResult)) {
|
||||
$requestResult = new RequestResult();
|
||||
$requestResult->request_id = $id;
|
||||
$requestResult->type_id = ResultCache::TYPE_TELEGRAM;
|
||||
$requestResult->data = Json::encode($telegramItems);
|
||||
$requestResult->index = count($telegramItems)?Settings::get("search_index_telegram", 7):0;
|
||||
$requestResult->save();
|
||||
}
|
||||
|
||||
$items = ArrayHelper::merge($items, $telegramItems);
|
||||
|
||||
// Viber
|
||||
$viberItems = SearchHelper::Viber($phones);
|
||||
|
||||
$requestResult = RequestResult::find()->where(["request_id" => $id, "type_id" => ResultCache::TYPE_VIBER])->one();
|
||||
|
||||
if(is_null($requestResult)) {
|
||||
$requestResult = new RequestResult();
|
||||
$requestResult->request_id = $id;
|
||||
$requestResult->type_id = ResultCache::TYPE_VIBER;
|
||||
$requestResult->data = Json::encode($viberItems);
|
||||
$requestResult->index = count($viberItems)?Settings::get("search_index_viber", 7):0;
|
||||
$requestResult->save();
|
||||
}
|
||||
|
||||
$items = ArrayHelper::merge($items, $viberItems);
|
||||
|
||||
// Numbuster
|
||||
$numbusterItems = SearchHelper::Numbuster($phones);
|
||||
|
||||
$requestResult = RequestResult::find()->where(["request_id" => $id, "type_id" => ResultCache::TYPE_NUMBUSTER])->one();
|
||||
|
||||
if(is_null($requestResult)) {
|
||||
$requestResult = new RequestResult();
|
||||
$requestResult->request_id = $id;
|
||||
$requestResult->type_id = ResultCache::TYPE_NUMBUSTER;
|
||||
$requestResult->data = Json::encode($numbusterItems);
|
||||
$requestResult->index = count($numbusterItems)?Settings::get("search_index_numbuster", 7):0;
|
||||
$requestResult->save();
|
||||
}
|
||||
|
||||
$items = ArrayHelper::merge($items, $numbusterItems);
|
||||
|
||||
// Truecaller
|
||||
$truecallerItems = SearchHelper::Truecaller($phones);
|
||||
|
||||
$requestResult = RequestResult::find()->where(["request_id" => $id, "type_id" => ResultCache::TYPE_TRUECALLER])->one();
|
||||
|
||||
if(is_null($requestResult)) {
|
||||
$requestResult = new RequestResult();
|
||||
$requestResult->request_id = $id;
|
||||
$requestResult->type_id = ResultCache::TYPE_TRUECALLER;
|
||||
$requestResult->data = Json::encode($truecallerItems);
|
||||
$requestResult->index = count($truecallerItems)?Settings::get("search_index_truecaller", 7):0;
|
||||
$requestResult->save();
|
||||
}
|
||||
|
||||
$items = ArrayHelper::merge($items, $truecallerItems);
|
||||
|
||||
// Vk
|
||||
$vkItems = SearchHelper::Vk($phones);
|
||||
|
||||
$requestResult = RequestResult::find()->where(["request_id" => $id, "type_id" => ResultCache::TYPE_VK_2012])->one();
|
||||
|
||||
if(is_null($requestResult)) {
|
||||
$requestResult = new RequestResult();
|
||||
$requestResult->request_id = $id;
|
||||
$requestResult->type_id = ResultCache::TYPE_VK_2012;
|
||||
$requestResult->data = Json::encode($vkItems);
|
||||
$requestResult->index = count($vkItems)?Settings::get("search_index_vk", 20):0;
|
||||
$requestResult->save();
|
||||
}
|
||||
|
||||
$items = ArrayHelper::merge($items, $vkItems);
|
||||
|
||||
// Avito
|
||||
$avitoItems = SearchHelper::Avito($phones);
|
||||
|
||||
$requestResult = RequestResult::find()->where(["request_id" => $id, "type_id" => ResultCache::TYPE_AVITO])->one();
|
||||
|
||||
if(is_null($requestResult)) {
|
||||
$requestResult = new RequestResult();
|
||||
$requestResult->request_id = $id;
|
||||
$requestResult->type_id = ResultCache::TYPE_AVITO;
|
||||
$requestResult->data = Json::encode($avitoItems);
|
||||
$requestResult->index = count($avitoItems)?Settings::get("search_index_avito", 15):0;
|
||||
$requestResult->save();
|
||||
}
|
||||
|
||||
$items = ArrayHelper::merge($items, $avitoItems);
|
||||
|
||||
if(count(ArrayHelper::getColumn($items, "name"))) {
|
||||
$searchRequest->is_has_name = true;
|
||||
}
|
||||
if(count(ArrayHelper::getColumn($items, "photo"))) {
|
||||
$searchRequest->is_has_photo = true;
|
||||
}
|
||||
$searchRequest->save();
|
||||
|
||||
sort($items);
|
||||
|
||||
$names = array_unique(array_filter(array_map(function ($data) {
|
||||
return ArrayHelper::getValue($data, 'name');
|
||||
}, $items)));
|
||||
|
||||
sort($names);
|
||||
|
||||
$photo = false;
|
||||
|
||||
foreach ($items as $item) {
|
||||
if (isset($item['photo'])) {
|
||||
$photo = $item['photo'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return compact('names', 'photo');
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue