From: Aleksey Filippov Date: Wed, 15 May 2024 17:43:52 +0000 (+0300) Subject: правка по добавлению вонусов через api и логирование X-Git-Tag: 1.1~29^2 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=b3141b2676c7f80804af3d24fe6c8b2f19264121;p=erp24_rep%2Fyii-erp24%2F.git правка по добавлению вонусов через api и логирование --- diff --git a/erp24/api2/controllers/BonusController.php b/erp24/api2/controllers/BonusController.php index 757ea113..e4c180a4 100644 --- a/erp24/api2/controllers/BonusController.php +++ b/erp24/api2/controllers/BonusController.php @@ -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) { diff --git a/erp24/api2/controllers/DataController.php b/erp24/api2/controllers/DataController.php index eb58ba93..e93ae787 100644 --- a/erp24/api2/controllers/DataController.php +++ b/erp24/api2/controllers/DataController.php @@ -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"]; diff --git a/erp24/services/LogService.php b/erp24/services/LogService.php index a4fde779..06baca0c 100644 --- a/erp24/services/LogService.php +++ b/erp24/services/LogService.php @@ -51,7 +51,8 @@ class LogService $input = isset(Yii::$app->request->getRawBody) ? Yii::$app->request->getRawBody() : ""; $hash_input = hash('md5', $input); $h = ApiErrorLog::find()->where(['hash_input' => $hash_input])->andWhere(['url' => Yii::$app->request->url ?? ''])->one(); - if (!$h) { + if (1) { +// if (!$h) { $apiErrorLog = new ApiErrorLog; $apiErrorLog->url = Yii::$app->request->url ?? ''; $apiErrorLog->created_at = date('Y-m-d H:i:s');