From 3d298f5340c24e54a778973ddfe5611878c0f279 Mon Sep 17 00:00:00 2001 From: fomichev Date: Fri, 20 Dec 2024 18:09:01 +0300 Subject: [PATCH] =?utf8?q?=D0=97=D0=B0=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD?= =?utf8?q?=D0=B8=D0=B5=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- ...241220_131428_create_sent_kogort_table.php | 2 +- erp24/records/Users.php | 58 +++++++++++++------ 2 files changed, 40 insertions(+), 20 deletions(-) diff --git a/erp24/migrations/m241220_131428_create_sent_kogort_table.php b/erp24/migrations/m241220_131428_create_sent_kogort_table.php index 80fb59dc..11c8c17e 100644 --- a/erp24/migrations/m241220_131428_create_sent_kogort_table.php +++ b/erp24/migrations/m241220_131428_create_sent_kogort_table.php @@ -24,7 +24,7 @@ class m241220_131428_create_sent_kogort_table extends Migration 'status' => $this->tinyInteger(1)->notNull()->defaultValue(1)->comment('Вхождение в когорту'), 'contact' => $this->tinyInteger(1)->notNull()->defaultValue(0)->comment('Контакт с клиентом'), 'purchase' => $this->tinyInteger(1)->notNull()->defaultValue(0)->comment('Покупка'), - 'created_at' => $this->dateTime()->notNull()->comment('Дата создания записи'), + 'created_at' => $this->dateTime()->notNull()->defaultExpression('CURRENT_TIMESTAMP')->comment('Дата создания записи'), ]); } } diff --git a/erp24/records/Users.php b/erp24/records/Users.php index 91f780e2..182120be 100755 --- a/erp24/records/Users.php +++ b/erp24/records/Users.php @@ -301,6 +301,14 @@ class Users extends \yii\db\ActiveRecord $startDate = $startDate ?? date('Y-m-d'); $monthDay = date('m-d', strtotime($startDate)); + $messagesSettings = UsersMessageManagement::find() + ->where(['active' => 1]) + ->one(); + + $step1 = $messagesSettings ? $messagesSettings->day_before_step1 : 10; + $step2 = $messagesSettings ? $messagesSettings->day_before_step2 : 4; + $step3 = $messagesSettings ? $messagesSettings->day_before_step3 : 2; + $salesPhone = Sales::find() ->where(new \yii\db\Expression("TO_CHAR(date, 'MM-DD') = :monthDay", [':monthDay' => $monthDay])) //->andWhere(new \yii\db\Expression("date <= NOW()")) @@ -315,32 +323,44 @@ class Users extends \yii\db\ActiveRecord ->column(); $usersArray = array_unique(array_merge($salesPhone, $memorableDate)); + //TODO: Проверка что он уже участвовал в когорте раннее + $phonesSent = SentKogort::find() + ->select('phone') + ->where(['between', 'kogort_date', date('Y-m-d', strtotime("$startDate -$step1 days")), date('Y-m-d', strtotime("$startDate -1 days"))]) + ->column(); + + $filteredUsers = array_diff($usersArray, $phonesSent); + $kogortData = array_values($filteredUsers); + $data = []; if ($type === 'target') { - //TODO: Проверка что он уже участвовал в когорте раннее - - foreach ($usersArray as $phone) { - $userPhone = $phone; - $userData = [ - 'phone' => $userPhone, - ]; - $data[] = $userData; + $kogortPhones = SentKogort::find() + ->select('phone') + ->where(['kogort_date' => $startDate]) + ->column(); + foreach ($kogortData as $phone) { + if($phone) { + if (!in_array($phone, $kogortPhones) ) { + $sentKogort = new SentKogort; + $sentKogort->phone = $phone; + $sentKogort->kogort_date = $startDate; + $sentKogort->kogort_unixtime = (int)strtotime($startDate . ' 00:00:00'); + $sentKogort->status = 1; + $sentKogort->save(false); + } + + $userData = [ + 'phone' => $phone, + ]; + $data[] = $userData; + } } return $data; } - +// Выборка по пользователям - проверка на подписку $query = Users::find() - // ->andWhere() //заглушка на проверку что он уже участвовал в - ->andWhere(['phone' => $usersArray]); - - $messagesSettings = UsersMessageManagement::find() - ->where(['active' => 1]) - ->one(); - - $step1 = $messagesSettings ? $messagesSettings->day_before_step1 : 10; - $step2 = $messagesSettings ? $messagesSettings->day_before_step2 : 4; - $step3 = $messagesSettings ? $messagesSettings->day_before_step3 : 2; + ->andWhere(['phone' => $kogortData]); if ($type === 'whatsapp') { $excludeSalesPhone = Sales::find() -- 2.39.5