]> gitweb.erp-flowers.ru Git - yii-erp24/.git/commitdiff
правка по добавлению вонусов через api и логирование
authorAleksey Filippov <Aleksey.Filippov@erp-flowers.ru>
Wed, 15 May 2024 17:43:52 +0000 (20:43 +0300)
committerAleksey Filippov <Aleksey.Filippov@erp-flowers.ru>
Wed, 15 May 2024 17:43:52 +0000 (20:43 +0300)
erp24/api2/controllers/BonusController.php
erp24/api2/controllers/DataController.php
erp24/services/LogService.php

index 757ea1138856b965112712eff33be9251dfba410..e4c180a4a1b2ac3ba0295a84bece78a3dd8fac42 100644 (file)
@@ -37,12 +37,19 @@ class BonusController extends BaseController
     private static $CREDIT_HIGH_PROCENT = 0.3;
     private static $CREDIT_HIGH_PROCENT_PART20 = 0.2;
 
+    const OUT_DIR =
+        "/var/www/erp24/api2/json";
+
     public function actionGetBonuses()
     {
         Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
         $data = file_get_contents('php://input');
         $result = json_decode($data, true);
 
+        $fl = date('_Y_m_d__H_i_s_');
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . $result['phone']);
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
         $__API_PARAMS = ['store_id', 'seller_id', 'phone']; // check_amount, items
 
         foreach ($__API_PARAMS as $paramName) {
@@ -55,20 +62,24 @@ class BonusController extends BaseController
                 return $this->asJson(["error_id" => 0, "error" => "$paramName is required"]);
             }
         }
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
 
         $phone = ClientHelper::phoneClear($result['phone']);
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         if (!ClientHelper::phoneVerify($phone)) {
             return $this->asJson(["error_id" => 0.2, "error" => "phone is required"]);
         }
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $result['phone'] = $phone;
 
         $check_amount = intval($result['check_amount'] ?? 0);
 
         $mess = [];
-
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         // массив с id товарыми не участвующих в бонусной
         $items_arr_no = array_values(ArrayHelper::map(
             UniversalCatalogItem::find()->where(['catalog_alias' => 'unused_nomenclature'])->all(), 'guid', 'guid'));
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
 //        $items_arr_no = [];
 //        $items_arr_no[] = "a3d4e24f-3373-11e9-babd-408d5cd22d1e";
 //        $items_arr_no[] = "40148db7-f9b2-11eb-af2b-98eecb8ceff8";
@@ -89,34 +100,37 @@ class BonusController extends BaseController
                 $all_amount += $item["price"] * $item["quantity"];
             }
         }
-
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $baza = $all_amount - $summa_no;
 
         $check_amount = $check_amount - $summa_no;
-
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $cnt = intval(Sales::find()->where(['phone' => $result['phone'], 'operation' => Sales::OPERATION_SALE])->count());
         $max_procent = $cnt == 0 ? self::$FIRST_SALE_PROCENT : ($cnt == 1 ? self::$SECOND_SALE_PROCENT : self::$MAX_PROCENT);
-
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $percent = ($result['phone'] == "79049031399") ? 0.9 : $max_procent;
-
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $userFound = Users::find()->where(['phone' => $result['phone']])->one();
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         /** @var $userFound Users */
         $salesCount = 0;
         if ($userFound && $userFound->telegram_created_at) {
             $salesCount = intval(Sales::find()->where(['phone' => $result['phone'], 'operation' => Sales::OPERATION_SALE])
                 ->andWhere(['>=', 'date', $userFound->telegram_created_at])->count());
         }
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $credit_procent = $userFound && $userFound->source > 0 && $salesCount == 0 ? self::$CREDIT_HIGH_PROCENT : self::$CREDIT_PROCENT;
         $will_be_credited_bonuses = $credit_procent * $baza;
 
         $will_be_credited_bonuses = round($will_be_credited_bonuses);
         $mess["will_be_credited_bonuses"] = $will_be_credited_bonuses;
-
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $store_id = ClientHelper::getExportId($result['store_id'], "city_store", 1);
-
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         // Логи введённых номеров телефонов кассирами
         $userPhone = UsersPhones::find()->where(['phone' => $result['phone']])->andWhere(['store_id' => $store_id])
             ->andWhere(['seller_id' => $result['seller_id']])->one();
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         if (!$userPhone) {
             $userPhone = new UsersPhones;
             $userPhone->phone = $result['phone'];
@@ -127,44 +141,53 @@ class BonusController extends BaseController
         if (!$userPhone->store_guid) {
             $userPhone->store_guid = $result['store_id'];
         }
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $userPhone->date = date('Y-m-d H:i:s');
         $userPhone->save();
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         if ($userPhone->getErrors()) {
-
+            file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             LogService::apiErrorLog(json_encode(["error_id" => 1, "error" => $userPhone->getErrors()], JSON_UNESCAPED_UNICODE));
 
             return $this->asJson(["error_id" => 1, "error" => $userPhone->getErrors()]);
         }
-
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $user = Users::find()->where(['phone' => $result['phone']])->andWhere(['phone_true' => '1'])->one();
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         if (!$user) {
+            file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '-нет в бонусной программе-' . __LINE__, FILE_APPEND);
             $mess["new_client"] = true;
             $mess["message_cashier"] = "Заполните данные клиента";
             $mess["error"] = "Покупателя " . $result['phone'] . " нет в бонусной программе!";
 
             return $this->asJson($mess);
         }
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $keycode = $user->keycode;
         $black_list = $user->black_list;
 
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         if (!$black_list) {
+            file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             $stop = UsersStopList::find()->select(['phone'])->where(['phone' => $result['phone']])->one();
             if ($stop) {
                 $black_list = 1;
                 $user->black_list = 1;
+                file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                 $user->save();
+                file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                 if ($user->getErrors()) {
-
+                    file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                     LogService::apiErrorLog(json_encode(["error_id" => 3, "error" => $user->getErrors()], JSON_UNESCAPED_UNICODE));
 
                     return $this->asJson(["error_id" => 3, "error" => $user->getErrors()]);
                 }
             }
         }
-
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $name = $user->name;
         $user_balans = ClientHelper::getBonusBalance($result['phone']);
-
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         if ($baza < 0) {
             $baza = 0;
         }
@@ -177,7 +200,7 @@ class BonusController extends BaseController
 //        $baza = $check_amount - $bonus;
 
         $mess["message_cashier"] = "Клиент $name найден"; // Код: $keycode
-
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         if ($black_list) {
             $mess['error'] = 'Этот номер в черном списке';
 
@@ -192,9 +215,10 @@ class BonusController extends BaseController
         $mess["total_bonuses"] = $user_balans;
         $mess["available_bonuses"] = $available_bonus;
         $mess["message_cashier"] = $txt . " Спросите последние 4 цифры телефона который позвонит клиенту $user_balans";
-
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         LogService::apiLogs(1, json_encode($mess, JSON_UNESCAPED_UNICODE));
 
+        file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__ . ' OK ', FILE_APPEND);
         return $this->asJson($mess);
     }
 
@@ -304,6 +328,11 @@ class BonusController extends BaseController
         $data = file_get_contents('php://input');
         $result = json_decode($data, true);
 
+        $fl = date('_Y_m_d__H_i_s_');
+        file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . $result['phone']);
+        file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
+
         $__API_PARAMS = ['store_id', 'seller_id', 'phone']; // first_name, second_name, sex, birth_day, referral_id, comment, events
 
         foreach ($__API_PARAMS as $paramName) {
@@ -316,9 +345,11 @@ class BonusController extends BaseController
                 return $this->asJson(["error_id" => 1, "error" => "$paramName is required"]);
             }
         }
-
+        file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $phone = ClientHelper::phoneClear($result['phone']);
+        file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         if (!ClientHelper::phoneVerify($phone)) {
+            file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             return $this->asJson(["error_id" => 1.2, "error" => "phone is required"]);
         }
         $result['phone'] = $phone;
@@ -347,10 +378,12 @@ class BonusController extends BaseController
 //        }
 
         $mess = [];
-
+        file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         /* @var $user Users */
         $user = Users::find()->where(['phone' => $result['phone']])->andWhere(['phone_true' => '1'])->andWhere(['black_list' => '0'])->one();
+        file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         if ($user) {
+            file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             $user->referral_id = $referral_id != $user->id ? $referral_id : null;
             $user->pol = $sex;
             $user->bdate = $birth_day;
@@ -360,15 +393,18 @@ class BonusController extends BaseController
             $user->keycode = '' . rand(1000, 9999);
             $user->source = $source == 2 ? 1 : 0;
             $user->save(); // иначе не пройдём валидацию, т.к. множество полей в бд не заполнены.
+            file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             if ($user->getErrors()) {
+                file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
 
                 LogService::apiErrorLog(json_encode(["error_id" => 2, "error" => $user->getErrors()], JSON_UNESCAPED_UNICODE));
 
                 return $this->asJson(["error_id" => 2, "error" => $user->getErrors()]);
             }
-
+            file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             $userEventOld = UsersEvents::find()->where(['phone' => $phone])->orderBy(['date_add' => SORT_ASC])->one();
             if ($userEventOld && $userEventOld->date_add < date('Y-m-d H:i:s', time() - 2 * 86400)) { // Дата добавление последнего события не старше двух дней
+                file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                 $mess["result"] = true;
                 $mess["message_cashier"] = "Возможность внесения памятных дат ограничена";
 
@@ -376,9 +412,11 @@ class BonusController extends BaseController
 
                 return $this->asJson($mess);
             }
+            file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
 
             $nomer_event = 1;
             $dates = [];
+
             foreach ($events as $k => $mass) {
                 $date = $mass["date"] ?? '';
                 $event_id = intval($mass['event_id'] ?? 0);
@@ -386,6 +424,7 @@ class BonusController extends BaseController
                 $datea = explode("-", $date);
                 $date_end = date("Y", time() + self::$YEAR_PERIOD * 86400) . "-" . $datea[1] . "-" . $datea[2];
                 $userEvent2 = UsersEvents::find()->where(['phone' => $phone])->andWhere(['date_day' => $datea[2]])->andWhere(['date_month' => $datea[1]])->one();
+                file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                 if ($userEvent2) {
                     $userEvent2->delete();
                 }
@@ -397,13 +436,15 @@ class BonusController extends BaseController
                 $userEvent3->date_day = $datea[2];
                 $userEvent3->date_month = $datea[1];
                 $userEvent3->date_add = date('Y-m-d H:i:s');
-                $userEvent3->tip = '???';
+                $userEvent3->tip = strval('???');
                 $userEvent3->name = 'М';
                 $userEvent3->sex = 'm';
                 $userEvent3->date_edit = date("Y-m-d H:i:s");
-                $userEvent3->date_edit_info = '???';
+                $userEvent3->date_edit_info = date("Y-m-d H:i:s");
+                file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                 $userEvent3->save(); // иначе не пройдём валидацию, т.к. множество полей в бд не заполнены.
                 if ($userEvent3->getErrors()) {
+                    file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
 
                     LogService::apiErrorLog(json_encode(["error_id" => 3, "error" => $userEvent3->getErrors()], JSON_UNESCAPED_UNICODE));
 
@@ -413,6 +454,7 @@ class BonusController extends BaseController
                 $nomer_event++;
             }
         } else {
+            file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             $created_name = $seller_id;
             $rand = rand(1000, 9999);
             $name = "$first_name $second_name";
@@ -433,24 +475,25 @@ class BonusController extends BaseController
             if ($seller_id_new) {
                 $seller_id_int = $seller_id_new->entity_id;
             }
+            file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             Users::deleteAll(['phone' => $phone, 'phone_true' => '0']);
-
+            file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             $user2 = new Users;
             $user2->source = $source;
             $user2->pol = $sex;
-            $user2->keycode = '' . $rand;
+            $user2->keycode = strval($rand);
             $user2->phone = $phone;
             $user2->name = $name;
             $user2->name_name = $first_name;
             $user2->name_last = $second_name;
             $user2->password = $pass;
-            $user2->phone_true = '1';
+            $user2->phone_true = strval(1);
             $user2->bdate = $birth_day;
             $user2->referral_id = $referral_id;
             $user2->comment = $comment;
             $user2->created_id = $seller_id_int ?? 0;
             $user2->created_name = $created_name;
-            $user2->seller_id = '' . $seller_id;
+            $user2->seller_id = strval($seller_id);
             $user2->store_id = $store_id_guid;
             $user2->created_store_id = $store_id_int ?? 0;
             $user2->created_store = $created_store;
@@ -464,14 +507,18 @@ class BonusController extends BaseController
             $user2->setka_id = $setka_id;
             $user2->card = "" . ($phone * 2 + 1608 + $setka_id); // генерируем номер карты который зависит от номера сетки + ДР Тимура
             $user2->save();  // иначе не пройдём валидацию, т.к. множество полей в бд не заполнены.
+            file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             if ($user2->getErrors()) {
+                file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
 
                 LogService::apiErrorLog(json_encode(["error_id" => 4, "error" => $user2->getErrors()], JSON_UNESCAPED_UNICODE));
 
                 return $this->asJson(["error_id" => 4, "error" => $user2->getErrors()]);
             }
 
+            file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             if ($store_id == '56524cb1-4763-11ea-8cce-b42e991aff6c') {
+                file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                 $admin_id = ClientHelper::getExportId($seller_id, "admin", 1);
 
                 $usersBonus = new UsersBonus;
@@ -492,8 +539,9 @@ class BonusController extends BaseController
                 $usersBonus->date_start = date('Y-m-d 08:00:00', strtotime('+1 day', strtotime($usersBonus->date)));
                 $usersBonus->date_end = date('Y-m-d H:i:s', strtotime('+1 week', strtotime($usersBonus->date_start)));
                 $usersBonus->save();
+                file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                 if ($usersBonus->getErrors()) {
-
+                    file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                     LogService::apiErrorLog(json_encode(["error_id" => 5, "error" => $usersBonus->getErrors()], JSON_UNESCAPED_UNICODE));
 
                     return $this->asJson(["error_id" => 5, "error" => $usersBonus->getErrors()]);
@@ -506,6 +554,7 @@ class BonusController extends BaseController
 
         LogService::apiLogs(1, json_encode($mess, JSON_UNESCAPED_UNICODE));
 
+        file_put_contents(self::OUT_DIR . '/save_client_info_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__ . ' OK ', FILE_APPEND);
         return $this->asJson($mess);
     }
 
@@ -514,13 +563,25 @@ class BonusController extends BaseController
         Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
         $data = file_get_contents('php://input');
         $result = json_decode($data, true);
+        $resultTest = $result;
+        $fl = date('_Y_m_d__H_i_s_');
+        $json=json_encode($resultTest,JSON_UNESCAPED_UNICODE);
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '_info.json', PHP_EOL . '--' . $result['phone']);
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '_info.json', ' '.date("d.m.Y H:i:s",time()).' JSON: '.$json.'  ', FILE_APPEND);
+
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . $result['phone']);
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
 
         $__API_PARAMS = ['store_id', 'seller_id', 'phone', 'check_amount', 'check_id', 'check_name']; // items, auth_code, write_off_bonuses
 
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         foreach ($__API_PARAMS as $paramName) {
+
+            file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             if (empty($result[$paramName])) {
 
                 if ($paramName != 'phone') {
+                    file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '-error-' . __LINE__, FILE_APPEND);
                     LogService::apiErrorLog(json_encode(["error_id" => 1, "error" => "$paramName is required"], JSON_UNESCAPED_UNICODE));
                 }
 
@@ -528,10 +589,17 @@ class BonusController extends BaseController
             }
         }
 
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $phone = ClientHelper::phoneClear($result['phone']);
+
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         if (!ClientHelper::phoneVerify($phone)) {
+
+            file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '-error-' . __LINE__, FILE_APPEND);
             return $this->asJson(["error_id" => 1.2, "error" => "phone is required"]);
         }
+
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $result['phone'] = $phone;
         $result['items'] = $result['items'] ?? [];
 
@@ -545,12 +613,16 @@ class BonusController extends BaseController
         $auth_code = $result['auth_code'] ?? 0;
         $write_off_bonuses = intval($result["write_off_bonuses"] ?? 0); // только при продаже
 
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $amount_real = 0;
         $items_arr_no = array_values(ArrayHelper::map(
             UniversalCatalogItem::find()->where(['catalog_alias' => 'unused_nomenclature'])->all(), 'guid', 'guid'));
 
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $summa_no = 0; //пробегаемся по массиву с товарами и считаем сумму вычета
         $amount_all = 0;
+
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         foreach ($result['items'] as $item) {
             if (in_array($item["product_id"], $items_arr_no)) {
                 $summa_no = $summa_no + $item["price"] * $item["quantity"];
@@ -560,9 +632,14 @@ class BonusController extends BaseController
             $amount_all = $amount_all + $item["price"] * $item["quantity"];
         }
 
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
         $cnt = intval(Sales::find()->where(['phone' => $result['phone'], 'operation' => Sales::OPERATION_SALE])->count());
+
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $max_procent = $cnt == 0 ? self::$FIRST_SALE_PROCENT : ($cnt == 1 ? self::$SECOND_SALE_PROCENT : self::$MAX_PROCENT);
 
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         // если списывается в попытке больше бонусов чем может списаться -
         $percent = $phone == "79049031399" ? 0.9 : $max_procent;
         $write_off_bonuses_theory = round($amount_real * $percent);
@@ -576,17 +653,24 @@ class BonusController extends BaseController
 
         $mess = [];
 
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $user = Users::find()->where(['phone' => $result['phone']])->andWhere(['phone_true' => '1'])->one();
         if (!$user) {
+
+            file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             $mess["error"] = "Покупателя " . $result['phone'] . " нет в бонусной программе!";
 
             return $this->asJson($mess);
         }
 
-        if ($user->keycode != $auth_code) {
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+        if ($user->keycode != strval($auth_code)) {
 
+            file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '-auth_code not valid-' . __LINE__ . ' keycode ' .$user->keycode . '|  auth_code ' . strval($auth_code), FILE_APPEND);
             return $this->asJson(['error' => 'auth_code not valid']);
         }
+
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $user_id = $user->id;
 //        $keycode = $user->keycode;
 //        $name = $user->name;
@@ -598,23 +682,35 @@ class BonusController extends BaseController
 //            $referral_id = 0;
 //        }
         $ip = $_SERVER['REMOTE_ADDR'];
+
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $user_balans = ClientHelper::getBonusBalance($phone);
 
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
         $store_id_1c = $store_id;
         $site_id = 0;
 
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         // получаем внутренний ID продаца - сотрудника из таблицы admin
         $admin_id = ClientHelper::getExportId($seller_id, "admin", 1);
         // получаем внутренний ID продаца - сотрудника из таблицы admin
         $store_id = ClientHelper::getExportId($store_id_1c, "city_store", 1);
 
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $writeOffAlready = false;
         if (!empty($lid_id)) {
+
+            file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             $writeOffAlready = UsersBonus::find()->where(['lid_id' => $lid_id, 'phone' => $phone, 'tip_sale' => 'sale', 'tip' => 'minus'])->one() != null;
         }
 
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
         $user_balans_new = $user_balans;
         if ($write_off_bonuses && !$writeOffAlready) {
+
+            file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             $user_balans_new = $user_balans - $write_off_bonuses;
             $name_b = "Спиcание бонусов по чеку $check_name";
             $usersBonus = new UsersBonus;
@@ -639,38 +735,62 @@ class BonusController extends BaseController
             $usersBonus->date_start = $usersBonus->date; // Поле не заполнялось в старом апи, но без него бд выдаёт ошибку при сохранении
             $usersBonus->date_end = $usersBonus->date;   // Поле не заполнялось в старом апи, но без него бд выдаёт ошибку при сохранении
             $usersBonus->date_dell = $usersBonus->date;  // Поле не заполнялось в старом апи, но без него бд выдаёт ошибку при сохранении
+
+            file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
             $usersBonus->save(); // иначе не пройдём валидацию, т.к. множество полей в бд не заполнены.
 
+            file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
             if ($user->first_minus_balance === null) {
+
+                file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                 $user->first_minus_balance = $usersBonus->date;
                 $user->save();
+
+                file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             }
 
             if ($usersBonus->getErrors()) {
 
+                file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
                 LogService::apiErrorLog(json_encode(["error_id" => 4, "error" => $usersBonus->getErrors()], JSON_UNESCAPED_UNICODE));
 
+                file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                 return $this->asJson(["error_id" => 4, "error" => $usersBonus->getErrors()]);
             }
+
+            file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             file_put_contents(self::$USERS_AUTH_CALL_LOG2,
                 "" . date("d.m.Y H:i:s", time()) . " MINUS write_off_bonuses=" . $write_off_bonuses . "\n",
                 FILE_APPEND | LOCK_EX);
         }
         //начисляем кэшбек клиенту 10% от покупки - с базы за вычитом бонусов которые он списывает
+
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $userFound = Users::find()->where(['phone' => $result['phone']])->one();
         /** @var $userFound Users */
         $salesCount = 0;
+
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         if ($userFound && $userFound->telegram_created_at) {
             $salesCount = intval(Sales::find()->where(['phone' => $result['phone'], 'operation' => Sales::OPERATION_SALE])
                 ->andWhere(['>=', 'date', $userFound->telegram_created_at])->count());
+
+            file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         }
         $credit_procent_index = $userFound && $userFound->source > 0 && $salesCount == 0 ? 1 : 0;
 
         $back1 = $back = round($baza_back * self::$CREDIT_PROCENT);
         $nm = "Возврат с покупки " . (100 * self::$CREDIT_PROCENT) . "% $check_name сумма чека $check_amount";
+
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $userBonus2 = UsersBonus::find()->where(['phone' => $phone])->andWhere(['check_id' => $check_id])->andWhere(['site_id' => $site_id])
             ->andWhere(['store_id' => $store_id])->andWhere(['tip' => 'plus'])->andWhere(['bonus' => $back])->andWhere(['name' => $nm])->one();
         if (!$userBonus2) {
+
+            file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             $user_balans_new += $back;
 
             $userBonus2 = new UsersBonus;
@@ -695,17 +815,29 @@ class BonusController extends BaseController
             $userBonus2->lid_id = $lid_id;
             $userBonus2->price_skidka = 0;
             $userBonus2->date_dell = $userBonus2->date_end;
+
+            file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             $userBonus2->save();
+
+            file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             if ($userBonus2->getErrors()) {
 
+                file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
                 LogService::apiErrorLog(json_encode(["error_id" => 5, "error" => $userBonus2->getErrors()], JSON_UNESCAPED_UNICODE));
 
                 return $this->asJson(["error_id" => 5, "error" => $userBonus2->getErrors()]);
             }
+
+            file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             file_put_contents(self::$USERS_AUTH_CALL_LOG2,
                 "" . date("d.m.Y H:i:s", time()) . " PLUS bonus=" . $back . "\n",
                 FILE_APPEND | LOCK_EX);
+
+            file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             if ($credit_procent_index) {
+
+                file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                 $back = round($baza_back * self::$CREDIT_HIGH_PROCENT_PART20);
                 $nm = "Возврат с покупки " . (100 * self::$CREDIT_HIGH_PROCENT_PART20) . "% $check_name сумма чека $check_amount";
 
@@ -733,18 +865,28 @@ class BonusController extends BaseController
                 $userBonus2->lid_id = $lid_id;
                 $userBonus2->price_skidka = 0;
                 $userBonus2->date_dell = $userBonus2->date_end;
+
+                file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                 $userBonus2->save();
+
+                file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                 if ($userBonus2->getErrors()) {
 
+                    file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
                     LogService::apiErrorLog(json_encode(["error_id" => 5.2, "error" => $userBonus2->getErrors()], JSON_UNESCAPED_UNICODE));
 
                     return $this->asJson(["error_id" => 5.2, "error" => $userBonus2->getErrors()]);
                 }
                 if ($userFound->telegram_created_at == null) {
                     $userFound->telegram_created_at = date("Y-m-d H:i:s");
+
+                    file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                     $userFound->save();
                     if ($userFound->getErrors()) {
 
+                        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
+
                         LogService::apiErrorLog(json_encode(["error_id" => 5.3, "error" => $userFound->getErrors()], JSON_UNESCAPED_UNICODE));
 
                         return $this->asJson(["error_id" => 5.3, "error" => $userFound->getErrors()]);
@@ -755,8 +897,14 @@ class BonusController extends BaseController
                 $notifiableUser->phone = $phone;
                 $notifiableUser->type = "first_given_bonus";
                 $notifiableUser->data = "" . ($back1 + $back);
+
+                file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                 $notifiableUser->save();
+
+                file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                 if ($notifiableUser->getErrors()) {
+
+                    file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
                     return $this->asJson(["error_id" => 5.4, "error" => $notifiableUser->getErrors()]);
                 }
             }
@@ -850,9 +998,13 @@ class BonusController extends BaseController
 //        $user->alerts_date = "???";              // Поле не заполнялось в старом апи, но без него бд выдаёт ошибку при сохранении
 //        $user->alerts_reklama = "???";           // Поле не заполнялось в старом апи, но без него бд выдаёт ошибку при сохранении
 //        $user->seller_id = "???";                // Поле не заполнялось в старом апи, но без него бд выдаёт ошибку при сохранении
+
+        file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $user->save();
         if ($user->getErrors()) {
 
+
+            file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
             LogService::apiErrorLog(json_encode(["error_id" => 6, "error" => $user->getErrors()], JSON_UNESCAPED_UNICODE));
 
             file_put_contents(self::$USERS_AUTH_CALL_LOG2,
@@ -898,7 +1050,7 @@ class BonusController extends BaseController
         $mess["message_cashier"] = "Бонусы списаны";
 
         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);
         return $this->asJson($mess);
     }
 
@@ -1228,6 +1380,11 @@ class BonusController extends BaseController
 
         $request = Yii::$app->request->getRawBody();
 
+        $requestTest = json_decode(\Yii::$app->getRequest()->getRawBody(), true);
+
+        $fl = date('_Y_m_d__H_i_s_');
+        file_put_contents(self::OUT_DIR . '/add_bonuses_' . $fl . '.json', PHP_EOL . implode(',', $requestTest));
+
         try {
             $result = Json::decode($request);
         } catch (\Exception $ex) {
index eb58ba933c0ad05d03a17ba21e86638c7884e479..e93ae7877da90b11c7f8c9f1c37c64f30be25b51 100644 (file)
@@ -732,8 +732,8 @@ class DataController extends BaseController {
                     $incoming->number = $arr["number"];
                     $incoming->date = $arr["date"];
                     $incoming->comment = $arr["comment"] ?? '';
-                    $incoming->items = $arr["items"];
-                    $incoming->is_discrepancies = $arr["is_discrepancies"];
+                    $incoming->items = (int) $arr["items"];
+                    $incoming->is_discrepancies = (int) $arr["is_discrepancies"];
                     $incoming->supplier_items = empty($arr["supplier_items"]) ? '' : json_encode($arr["supplier_items"],JSON_UNESCAPED_UNICODE);
                     $incoming->payments = empty($arr["payments"]) ? '' : json_encode($arr["payments"],JSON_UNESCAPED_UNICODE);
                     $incoming->summ = $arr["summ"];
index a4fde7795e2ba992ddb17c85711e25af34c9d574..06baca0c713a8b1343199befe061cb5736c035ba 100644 (file)
@@ -51,7 +51,8 @@ class LogService
         $input = isset(Yii::$app->request->getRawBody) ? Yii::$app->request->getRawBody() : "<no input>";
         $hash_input = hash('md5', $input);
         $h = ApiErrorLog::find()->where(['hash_input' => $hash_input])->andWhere(['url' => Yii::$app->request->url ?? '<no url>'])->one();
-        if (!$h) {
+        if (1) {
+//        if (!$h) {
             $apiErrorLog = new ApiErrorLog;
             $apiErrorLog->url = Yii::$app->request->url ?? '<no url>';
             $apiErrorLog->created_at = date('Y-m-d H:i:s');