]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
[ERP-356] logs
authorAlexander Smirnov <fredeom@mail.ru>
Wed, 19 Mar 2025 06:21:15 +0000 (09:21 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Wed, 19 Mar 2025 06:21:15 +0000 (09:21 +0300)
erp24/api2/controllers/BonusController.php
erp24/jobs/SendBonusInfoToSiteJob.php
erp24/migrations/m250319_054813_create_table_user_bonus_send_to_tg_logs.php [new file with mode: 0755]
erp24/records/UserBonusSendToTgLogs.php [new file with mode: 0644]

index b7f9586db9b5f125ac5557d1d61fee56c2766272..d9e77dcd246cf9f3123fb13b8a79e91e5644c0af 100644 (file)
@@ -18,6 +18,7 @@ use yii_app\records\Products1c;
 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;
@@ -1210,12 +1211,22 @@ class BonusController extends BaseController
         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);
 
index 7cefdeb582dbef73e0312b4e947a6e56b662facb..099e78a19c20692d96555797b2029b476c8729ba 100644 (file)
@@ -4,7 +4,10 @@ namespace yii_app\jobs;
 
 
 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
@@ -20,8 +23,30 @@ class SendBonusInfoToSiteJob extends \yii\base\BaseObject implements JobInterfac
         $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 {
diff --git a/erp24/migrations/m250319_054813_create_table_user_bonus_send_to_tg_logs.php b/erp24/migrations/m250319_054813_create_table_user_bonus_send_to_tg_logs.php
new file mode 100755 (executable)
index 0000000..c807118
--- /dev/null
@@ -0,0 +1,39 @@
+<?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);
+        }
+    }
+}
diff --git a/erp24/records/UserBonusSendToTgLogs.php b/erp24/records/UserBonusSendToTgLogs.php
new file mode 100644 (file)
index 0000000..2093bbb
--- /dev/null
@@ -0,0 +1,53 @@
+<?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',
+        ];
+    }
+}