From d2614f8de775b0c6e5e76b6dfdcef7d9862fcf28 Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Wed, 5 Jun 2024 11:36:12 +0300 Subject: [PATCH] draft. promocode migration --- erp24/api2/controllers/ClientController.php | 64 +++++++++++++++++++ .../m240605_072755_create_table_promocode.php | 37 +++++++++++ erp24/records/Promocode.php | 36 +++++++++++ 3 files changed, 137 insertions(+) create mode 100755 erp24/migrations/m240605_072755_create_table_promocode.php create mode 100644 erp24/records/Promocode.php diff --git a/erp24/api2/controllers/ClientController.php b/erp24/api2/controllers/ClientController.php index 0f960210..37e4d6e9 100644 --- a/erp24/api2/controllers/ClientController.php +++ b/erp24/api2/controllers/ClientController.php @@ -1045,4 +1045,68 @@ class ClientController extends BaseController { } } } + + public function actionApplyPromoCode() { + Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; + + $request = Yii::$app->request->getRawBody(); + + try { + $result = Json::decode($request); + } catch (\Exception $ex) { + return $this->asJson(['error' => ['code' => 400, 'message' => 'Json body invalid']]); + } + + if (!isset($result['phone'])) { + return $this->asJson(["error_id" => 1, "error" => "phone is required"]); + } + + if (!isset($result['code'])) { + return $this->asJson(["error_id" => 1.3, "error" => "code is required"]); + } + + $phone = ClientHelper::phoneClear($result['phone']); + if (!ClientHelper::phoneVerify($phone)) { + return $this->asJson(["error_id" => 1.2, "error" => "phone is required"]); + } + + if (!in_array($result['code'], ['tulpan10', 'rose8'])) { + return $this->asJson(["error_id" => 2, "error" => "unknown promo code"]); + } + + $tip_sale = 'p_' . $result['code']; + $userBonus = UsersBonus::find()->where(['phone' => $phone, 'tip_sale' => $tip_sale])->one(); + if ($userBonus) { + return $this->asJson(["error_id" => 2, "error" => "промокод уже использован"]); + } + + $usersBonus = new UsersBonus; + $usersBonus->date = date('Y-m-d H:i:s'); + $usersBonus->tip = 'plus'; + $usersBonus->tip_sale = $tip_sale; + $usersBonus->phone = $phone; + $usersBonus->name = "Бонусы по промокоду"; + $usersBonus->store_id = 0; + $usersBonus->site_id = 0; + $usersBonus->referal_id = 0; + $usersBonus->admin_id = 0; + $usersBonus->price = 0; + $usersBonus->price_skidka = 0; + $usersBonus->bonus = 500; + $usersBonus->store_id_1c = ''; + $usersBonus->seller_id_1c = ''; + $usersBonus->date_start = $usersBonus->date; + $usersBonus->date_end = date('Y-m-d H:i:s', strtotime('+366 days', strtotime($usersBonus->date_start))); + $usersBonus->save(); + if ($usersBonus->getErrors()) { + LogService::apiErrorLog(json_encode(["error_id" => 5, "error" => $usersBonus->getErrors()], JSON_UNESCAPED_UNICODE)); + return $this->asJson(["error_id" => 2, "error" => array_values($usersBonus->firstErrors)[0] ?? ""]); + } + + $mess = ['ok']; + + LogService::apiLogs(1, json_encode($mess, JSON_UNESCAPED_UNICODE)); + + return $this->asJson(['response' => $mess]); + } } diff --git a/erp24/migrations/m240605_072755_create_table_promocode.php b/erp24/migrations/m240605_072755_create_table_promocode.php new file mode 100755 index 00000000..6c7329ea --- /dev/null +++ b/erp24/migrations/m240605_072755_create_table_promocode.php @@ -0,0 +1,37 @@ +createTable(self::TABLE_NAME, [ + 'id' => $this->primaryKey(), + 'code' => $this->string(13)->notNull()->comment("Промокод"), + 'bonus' => $this->integer()->notNull()->comment('Количество бонусов получаемых по промокоду'), + 'active' => $this->tinyInteger()->notNull()->defaultValue(0)->comment('0 - не активный, 1 - активный'), + 'date_start' => $this->timestamp()->notNull()->comment('Дата начала действия промокода'), + 'date_end' => $this->timestamp()->notNull()->comment('Дата окончания действия промокода'), + 'created_by' => $this->integer()->notNull()->comment('ID создателя записи'), + 'updated_by' => $this->integer()->null()->comment('ID редактора записи'), + 'created_at' => $this->timestamp()->notNull()->comment('Дата создания'), + 'updated_at' => $this->timestamp()->null()->comment('Дата изменения'), + ]); + } + + /** + * {@inheritdoc} + */ + public function safeDown() + { + $this->dropTable(self::TABLE_NAME); + } +} diff --git a/erp24/records/Promocode.php b/erp24/records/Promocode.php new file mode 100644 index 00000000..048a899a --- /dev/null +++ b/erp24/records/Promocode.php @@ -0,0 +1,36 @@ + 'ID', + ]; + } + + +} \ No newline at end of file -- 2.39.5