Joywork/cron/errorFidsObjectNotis.php
2026-05-22 21:21:54 +03:00

126 lines
4.5 KiB
PHP

<?php
set_time_limit(0);
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
ini_set('display_errors', 1);
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
header('Content-Type: application/json');
$pdo = new MysqlPdo(hst, ndb, user, pass);
$pdo->query("SET NAMES 'utf8'");
$db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306');
$_serviceList = [
1 => 'avito',
2 => 'cian',
3 => 'yandex',
4 => 'domclick',
];
$arrayErrors = array();
$users = array();
$objects = array();
$usersIds = array();
$objectIds = array();
$dateTime = date('Y-m-d H:i:s', strtotime('-1 hour'));
$sql = "SELECT * FROM ads_stats WHERE agency_id > 0 and is_error = 1 AND is_manual=0 AND processed_at > '{$dateTime}'";
//echo $sql;
$q = $pdo->query($sql, true);
$row = $pdo->num_rows($q);
if($row > 0){
//echo $row;
while ($r = $pdo->fetch_assoc($q)){
$sql_error = "SELECT id FROM object_error_advert_notis WHERE object_id = {$r['object_id']} AND service_id = {$r['service_id']} AND agency_id = {$r['agency_id']}";
$q_error = $pdo->query($sql_error, true);
if($pdo->num_rows($q_error) == 0){
if($r['object_id'] > 0){
$arrayErrors[] = $r;
$objectIds[] = $r['object_id'];
}
}
}
if(empty($objectIds)) die();
$sql_obj = "SELECT id_add_user, id, adres FROM objects WHERE id in (".implode(',',$objectIds).") LIMIT 1000000 OPTION max_matches=1000000";
$q_obj = $db_sphinx->query($sql_obj);
while($r_obj = $db_sphinx->fetch_assoc($q_obj)){
$user_id = 0;
$user_id = (int)$r_obj['id_add_user'];
if($user_id > 0){
$objects[$r_obj['id']] = $r_obj;
$usersIds[] = $user_id;
}
}
$usersIds = array_unique($usersIds);
if(empty($usersIds)) die();
$sql_user = "SELECT * FROM users WHERE id in (".implode(',', $usersIds).")";
$q_user = $pdo->query($sql_user);
while($r_user = $pdo->fetch_assoc($q_user)){
$users[$r_user['id']] = $r_user;
}
$Telega = new Telegram(false, $pdo);
$max = new MaxClass();
foreach($arrayErrors as $error){
$object_id = 0;
$user_id = 0;
if(isset($objects[$error['object_id']])){
$object_id = (int)$error['object_id'];
$user_id = (int)$objects[$object_id]['id_add_user'];
$errors = '';
$send = 0;
$send_max = 0;
$is_read = 1;
$errors = addslashes($error['errors']);
if($object_id > 0 && $user_id > 0){
if(isset($users[$user_id])){
if($users[$user_id]['telegramm_notice'] > 0 && $users[$user_id]['telegramm_chat_id'] > 0){
$chatId = $users[$user_id]['telegramm_chat_id'];
$text = "Ошибка при публикации объекта ID {$object_id}";
$text .= "\nАдрес: ".$objects[$object_id]['adres'];
$text .= "\nПроверьте заполнение данных объекта";
$Telega->send($text, $chatId);
$send = 1;
}
if($users[$user_id]['max_notice'] > 0 && $users[$user_id]['max_user_id'] > 0){
$userMaxId = $users[$user_id]['max_user_id'];
$text = "Ошибка при публикации объекта ID {$object_id}";
$text .= "\nАдрес: ".$objects[$object_id]['adres'];
$text .= "\nПроверьте заполнение данных объекта";
$max->send_messages_to_user($userMaxId, $text);
$send = 1;
}
$sql_in_error = "INSERT INTO object_error_advert_notis SET
object_id={$object_id},
service_id = {$error['service_id']},
errors='{$errors}',
agency_id = {$error['agency_id']},
processed_at = '{$error['processed_at']}',
user_id = {$user_id},
send = $send,
send_max = $send_max,
is_read = {$is_read}";
// echo $sql_in_error."\n";
$pdo->query($sql_in_error);
}
}
}
}
}