use yii_app\records\Sales;
use yii_app\records\Timetable;
use yii_app\records\UniversalCatalogItem;
+use yii_app\records\UserBonusSendToTgLogs;
use yii_app\records\Users;
use yii_app\records\UsersAuthCallLog;
use yii_app\records\UsersBonus;
LogService::apiLogs(1, json_encode($mess, JSON_UNESCAPED_UNICODE));
file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__ . ' OK ', FILE_APPEND);
- Yii::$app->queue->push(new SendBonusInfoToSiteJob([
+ $input = [
'phone' => $phone,
'bonusCount' => $back10 + $back20,
'purchaseDate' => date("Y-m-d H:i:s"),
'orderId' => $check_id,
- ]));
+ ];
+
+ $userBonusSendToTgLogs = new UserBonusSendToTgLogs;
+ $userBonusSendToTgLogs->input_hash = md5(Json::encode($input));
+ $userBonusSendToTgLogs->input = Json::encode($input);
+ $userBonusSendToTgLogs->status = 1;
+ $userBonusSendToTgLogs->save();
+ if ($userBonusSendToTgLogs->getErrors()) {
+ LogService::apiErrorLog(json_encode(["error_id" => 100.001, "error" => $userBonusSendToTgLogs->getErrors()], JSON_UNESCAPED_UNICODE));
+ }
+ Yii::$app->queue->push(new SendBonusInfoToSiteJob($input));
// SiteService::notifySiteAboutBonuses($phone, $back10 + $back20, date("Y-m-d H:i:s"), $check_id);
use Yii;
+use yii\helpers\Json;
use yii\queue\JobInterface;
+use yii_app\records\UserBonusSendToTgLogs;
+use yii_app\services\LogService;
use yii_app\services\SiteService;
class SendBonusInfoToSiteJob extends \yii\base\BaseObject implements JobInterface
$purchaseDate = $this->purchaseDate;
$orderId = $this->orderId;
+ $input = [
+ 'phone' => $phone,
+ 'bonusCount' => $bonusCount,
+ 'purchaseDate' => $purchaseDate,
+ 'orderId' => $orderId,
+ ];
+
+ $inputHash = md5(Json::encode($input));
+ $userBonusSendToTgLogs = UserBonusSendToTgLogs::find()->where(['input_hash' => $inputHash])->one();
+ $userBonusSendToTgLogs->status ++;
+ $userBonusSendToTgLogs->save();
+ if ($userBonusSendToTgLogs->getErrors()) {
+ LogService::apiErrorLog(json_encode(["error_id" => 100.021, "error" => $userBonusSendToTgLogs->getErrors()], JSON_UNESCAPED_UNICODE));
+ }
try {
$result = SiteService::notifySiteAboutBonuses($phone, $bonusCount, $purchaseDate, $orderId);
+
+ $userBonusSendToTgLogs->output = Json::encode($result);
+ $userBonusSendToTgLogs->status ++;
+ $userBonusSendToTgLogs->save();
+ if ($userBonusSendToTgLogs->getErrors()) {
+ LogService::apiErrorLog(json_encode(["error_id" => 100.321, "error" => $userBonusSendToTgLogs->getErrors()], JSON_UNESCAPED_UNICODE));
+ }
+
if ($result) {
Yii::warning("Сообщение успешно отправлено на сайт", 'site');
} else {
--- /dev/null
+<?php
+
+use yii\db\Migration;
+
+/**
+ * Class m250319_054813_create_table_user_bonus_send_to_tg_logs
+ */
+class m250319_054813_create_table_user_bonus_send_to_tg_logs extends Migration
+{
+ const TABLE_NAME = 'erp24.user_bonus_send_to_tg_logs';
+ /**
+ * {@inheritdoc}
+ */
+ public function safeUp()
+ {
+ $tableSchema = $this->db->getTableSchema(self::TABLE_NAME);
+ if (!isset($tableSchema)) {
+ $this->createTable(self::TABLE_NAME, [
+ 'id' => $this->primaryKey(),
+ 'input_hash' => $this->string()->notNull()->comment('md5(input)'),
+ 'input' => $this->text()->null()->comment('Входной json'),
+ 'output' => $this->text()->null()->comment('Выходной json'),
+ 'status' => $this->integer()->notNull()->defaultValue(0)->comment('Кол-во упоминаний данной записи'),
+ ]);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function safeDown()
+ {
+ $tableSchema = $this->db->getTableSchema(self::TABLE_NAME);
+
+ if (isset($tableSchema)) {
+ $this->dropTable(self::TABLE_NAME);
+ }
+ }
+}
--- /dev/null
+<?php
+
+namespace yii_app\records;
+
+use Yii;
+
+/**
+ * This is the model class for table "user_bonus_send_to_tg_logs".
+ *
+ * @property int $id
+ * @property string $input_hash md5(input)
+ * @property string|null $input Входной json
+ * @property string|null $output Выходной json
+ * @property int $status Кол-во упоминаний данной записи
+ */
+class UserBonusSendToTgLogs extends \yii\db\ActiveRecord
+{
+ /**
+ * {@inheritdoc}
+ */
+ public static function tableName()
+ {
+ return 'user_bonus_send_to_tg_logs';
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function rules()
+ {
+ return [
+ [['input_hash'], 'required'],
+ [['input', 'output'], 'string'],
+ [['status'], 'default', 'value' => null],
+ [['status'], 'integer'],
+ [['input_hash'], 'string', 'max' => 255],
+ ];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function attributeLabels()
+ {
+ return [
+ 'id' => 'ID',
+ 'input_hash' => 'Input Hash',
+ 'input' => 'Input',
+ 'output' => 'Output',
+ 'status' => 'Status',
+ ];
+ }
+}