]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
ERP-355 Автоматизация звонков роботом из когорт
authormarina <m.zozirova@gmail.com>
Mon, 10 Mar 2025 08:05:04 +0000 (11:05 +0300)
committermarina <m.zozirova@gmail.com>
Mon, 10 Mar 2025 08:05:04 +0000 (11:05 +0300)
erp24/commands/CronController.php

index 7f5e95d52e1aa28c725fa72f716824c9b65bab79..1e8a63e0093caa9a5af43b7e228c91e78b86db50 100644 (file)
@@ -52,12 +52,13 @@ class CronController extends Controller
 //            'export-catalog' => \app\actions\cron\ExportCatalogAction::class,
 //            'cloudpayments-region' => \app\actions\cron\CloudpaymentsRegionAction::class,
 //            'bonus-users-sale-update' => \app\actions\cron\BonusUsersSaleUpdateAction::class,
-          //  '1c-check-1day' => \app\actions\cron\OneCCheckOneDayAction::class,
+            //  '1c-check-1day' => \app\actions\cron\OneCCheckOneDayAction::class,
         ];
     }
 
     //cron/one-c
-    public function actionOneC() {
+    public function actionOneC()
+    {
         $req_id = time();
         $json_post = '{"request_id": "' . $req_id . '" ,"incomings":{"start_time":"' . date("Y-m-d", time() - 86400) . ' 00:00:00","end_time":"' . date("Y-m-d", time()) . ' 23:59:59"},"checks":{"start_time":"' . date("Y-m-d", time() - 24400) . ' 00:00:00","end_time":"' . date("Y-m-d", time()) . ' 23:59:59"},
 "write_offs":{"start_time":"' . date("Y-m-d", time() - 86400 * 7) . ' 00:00:00","end_time":"' . date("Y-m-d", time()) . ' 23:59:59"}}';
@@ -68,9 +69,10 @@ class CronController extends Controller
     }
 
     //cron/one-c-check-one-day
-    public function actionOneCCheckOneDay() {
-        $req_id=time();
-        $json_post='{"request_id": "'.$req_id.'" ,"checks":{"start_time":"'.date("Y-m-d",time()-86400).' 00:00:00","end_time":"'.date("Y-m-d H:i:s",time()).'"}}';
+    public function actionOneCCheckOneDay()
+    {
+        $req_id = time();
+        $json_post = '{"request_id": "' . $req_id . '" ,"checks":{"start_time":"' . date("Y-m-d", time() - 86400) . ' 00:00:00","end_time":"' . date("Y-m-d H:i:s", time()) . '"}}';
 
         $this->setApiCron($req_id, $json_post);
 
@@ -78,9 +80,10 @@ class CronController extends Controller
     }
 
     //cron/one-c-sellers
-    public function actionOneCSellers() {
-        $req_id=time();
-        $json_post='{"request_id": "'.$req_id.'","nomenclature":true,"sellers":true, "prices":{"type_price":"Розничная цена"}, "balances":true,  "payment_types":true}';
+    public function actionOneCSellers()
+    {
+        $req_id = time();
+        $json_post = '{"request_id": "' . $req_id . '","nomenclature":true,"sellers":true, "prices":{"type_price":"Розничная цена"}, "balances":true,  "payment_types":true}';
 
         $this->setApiCron($req_id, $json_post);
 
@@ -88,9 +91,10 @@ class CronController extends Controller
     }
 
     //cron/one-c-price-msk
-    public function actionOneCPriceMsk() {
-        $req_id=time();
-        $json_post='{"request_id": "'.$req_id.'","nomenclature":true,"sellers":true, "prices":{"type_price":"Розничная Маг на Московск"}, "balances":true,  "payment_types":true}';
+    public function actionOneCPriceMsk()
+    {
+        $req_id = time();
+        $json_post = '{"request_id": "' . $req_id . '","nomenclature":true,"sellers":true, "prices":{"type_price":"Розничная Маг на Московск"}, "balances":true,  "payment_types":true}';
 
         $this->setApiCron($req_id, $json_post);
 
@@ -98,11 +102,12 @@ class CronController extends Controller
     }
 
     //cron/custom-one-c-cron
-    public function actionCustomOneCCron() {
-        $req_id=time();
+    public function actionCustomOneCCron()
+    {
+        $req_id = time();
 
         //чеки за 7 дней назад прогружаем
-        $json_post='{"request_id": "'.$req_id.'", "checks":{"start_time":"'.date("Y-m-d",time()-86400*7).' 00:00:00","end_time":"'.date("Y-m-d",time()).' 23:59:59"}}';
+        $json_post = '{"request_id": "' . $req_id . '", "checks":{"start_time":"' . date("Y-m-d", time() - 86400 * 7) . ' 00:00:00","end_time":"' . date("Y-m-d", time()) . ' 23:59:59"}}';
 
         $this->setApiCron($req_id, $json_post);
 
@@ -110,11 +115,12 @@ class CronController extends Controller
     }
 
     //cron/one-c-cron-self-cost-day
-    public function actionOneCCronSelfCostDay() {
-        $req_id=time();
+    public function actionOneCCronSelfCostDay()
+    {
+        $req_id = time();
 
         //себестоимость за текущий день
-        $json_post='{"request_id": "'.$req_id.'", "self_cost":{"start_time":"'.date("Y-m-d",time()).' 00:00:00","end_time":"'.date("Y-m-d",time()).' 23:59:59"}}';
+        $json_post = '{"request_id": "' . $req_id . '", "self_cost":{"start_time":"' . date("Y-m-d", time()) . ' 00:00:00","end_time":"' . date("Y-m-d", time()) . ' 23:59:59"}}';
 
         $this->setApiCron($req_id, $json_post);
 
@@ -165,7 +171,8 @@ class CronController extends Controller
 //    }
 
 
-    public function actionBalanceHistory() {
+    public function actionBalanceHistory()
+    {
         $data = Yii::$app->db->createCommand("SELECT * FROM balances")->queryAll();
 
         $command = Yii::$app->db->createCommand()->batchInsert('balances_history',
@@ -186,7 +193,8 @@ class CronController extends Controller
         $command->execute();
     }
 
-    private function setApiCron($req_id, $json_post) {
+    private function setApiCron($req_id, $json_post)
+    {
         Yii::$app->db->createCommand()->insert('api_cron', [
             'date' => new Expression('NOW()'),
             'date_up' => new Expression('NOW()'),
@@ -398,10 +406,10 @@ class CronController extends Controller
 
                     ],
                     [
-                        'kogort_date'   => $kogortDate,
-                        'target_date'   => $targetDate,
+                        'kogort_date' => $kogortDate,
+                        'target_date' => $targetDate,
                         'kogort_number' => SentKogort::KOGORT_NUMBERS['target'],
-                        'phone'         => $phonesArray,
+                        'phone' => $phonesArray,
                     ]
                 );
 
@@ -421,7 +429,7 @@ class CronController extends Controller
             $ip = "tst";
             $tip_sale = "target";
             $name = "Начисление бонусов на дату {$kogortDate}";
-            $daysToEnd   = $step1 + 1;
+            $daysToEnd = $step1 + 1;
             $userBonusExist = UsersBonus::find()
                 ->select(['phone'])
                 ->where(['phone' => $kogortPhones])
@@ -649,8 +657,8 @@ class CronController extends Controller
             );
 
             if (!empty($telegramUsers)) {
-                 $messageText = $messagesSettings
-                     ->replaceShortcodes($messagesSettings->offer_2, $targetDate);
+                $messageText = $messagesSettings
+                    ->replaceShortcodes($messagesSettings->offer_2, $targetDate);
                 foreach ($telegramUsers as $telegramUser) {
                     if (!in_array($telegramUser['phone'], $sentStatusKogort)) {
                         $messageData = [];
@@ -734,7 +742,7 @@ class CronController extends Controller
             $this->stdout("Некорректный формат времени\n", BaseConsole::FG_RED);
             return ExitCode::DATAERR;
         }
-        $currentDate =  $this->time ? date('Y-m-d', (int)$this->time) : date('Y-m-d');
+        $currentDate = $this->time ? date('Y-m-d', (int)$this->time) : date('Y-m-d');
         $stepsBack = $this->stepsBack ?? 0;
         $step3 = $messagesSettings ? $messagesSettings->day_before_step3 : 2;
 
@@ -814,6 +822,15 @@ class CronController extends Controller
                             ]
                         ]
                     ],
+                    'custom' => [
+                        [
+                            'id' => 125,
+                            'name' => 'Шаг воронки',
+                            'type' => 'funnel',
+                            'value' => 'На прозвон'
+
+                        ]
+                    ],
                     //признак того что звонок должен поступать сразу после загрузки лида
                     //поставить true при согласовании с маркетингом
                     //также добавить признак повод звонка при необходимости
@@ -857,16 +874,16 @@ class CronController extends Controller
         $batchSize = 500;
         $offset = 0;
 
-       // $csvFilePath = Yii::getAlias('@data/missing_users.csv');
-       // $fileHandle = fopen($csvFilePath, 'w');
-       // fputcsv($fileHandle, ['phone', 'username', 'chat_id', 'is-blocked', 'is_registered', 'reason'], ';');
+        // $csvFilePath = Yii::getAlias('@data/missing_users.csv');
+        // $fileHandle = fopen($csvFilePath, 'w');
+        // fputcsv($fileHandle, ['phone', 'username', 'chat_id', 'is-blocked', 'is_registered', 'reason'], ';');
 
         while (true) {
             $chatbotUsers = $remoteDb
                 ->createCommand('SELECT * FROM chatbot_telegram_users LIMIT :limit OFFSET :offset', [
-                ':limit' => $batchSize,
-                ':offset' => $offset,
-            ])->queryAll();
+                    ':limit' => $batchSize,
+                    ':offset' => $offset,
+                ])->queryAll();
 
             if (empty($chatbotUsers)) {
                 break;