From: fomichev Date: Fri, 20 Dec 2024 15:09:01 +0000 (+0300) Subject: Заполнение таблицы X-Git-Tag: 1.7~94^2~55 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=3d298f5340c24e54a778973ddfe5611878c0f279;p=erp24_rep%2Fyii-erp24%2F.git Заполнение таблицы --- 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()