From 4468eabd0319c53d6bc23f67bda6c375fbe8c7e4 Mon Sep 17 00:00:00 2001 From: safavimohadeseh78 Date: Tue, 11 Aug 2026 08:24:43 +0200 Subject: [PATCH] Add referral_show setting and keep existing setting values intact. Allow hiding the referral field on user registration via settings SQL and ConfigService, and document SQL-only Cursor rules that never overwrite live values. Co-authored-by: Cursor --- .cursor/rules/sql-only-no-server-code.mdc | 53 +++++++++++++++++++ app/Services/ConfigService.php | 20 +++++-- database/sql/add_referral_show_setting.sql | 42 +++++++++++++++ database/sql/deploy_settings_const.sql | 20 ++++++- ...ngs_const_preserve_value_sync_can_edit.sql | 19 ++++++- 5 files changed, 145 insertions(+), 9 deletions(-) create mode 100644 .cursor/rules/sql-only-no-server-code.mdc create mode 100644 database/sql/add_referral_show_setting.sql diff --git a/.cursor/rules/sql-only-no-server-code.mdc b/.cursor/rules/sql-only-no-server-code.mdc new file mode 100644 index 0000000..f422320 --- /dev/null +++ b/.cursor/rules/sql-only-no-server-code.mdc @@ -0,0 +1,53 @@ +--- +description: khaneghi_server — فقط SQL؛ کد سرور را تغییر نده؛ value را عوض نکن +alwaysApply: true +--- + +# khaneghi_server — SQL-only edits + +این ریپو Laravel API پلتفرم خانگی است (`khaneghi_server`؛ روی سرور معمولاً `…/server`). + +## قانون اصلی + +- **هرگز** کد اپلیکیشن/سرور را تغییر نده، مگر کاربر صریحاً بگوید «کد PHP/Laravel را هم عوض کن». +- وقتی کاربر دستوری برای تغییر می‌دهد، **فقط فایل‌های `.sql`** را ویرایش/ایجاد کن — ترجیحاً زیر `database/sql/`. +- سؤال، توضیح، و خواندن کل پروژه آزاد است؛ نوشتن فقط در محدودهٔ SQL. +- **`value` ها تغییر نکنند:** برای ردیف‌های موجود در `settings` / `const` هرگز `UPDATE ... SET value = ...` ننویس و value زنده‌ای که ادمین/سیستم تنظیم کرده را عوض نکن. فقط کلید جدید با `INSERT ... WHERE NOT EXISTS` و پیش‌فرض اولیه. متادیتا (`title_fa`, `description`, `type`, `can_edit`) مجاز است. استثنا فقط اگر کاربر صریحاً بگوید value را عوض کن (و در SQL شرط خالی‌بودن مستند شود). + +## مجاز (editable) + +- `database/sql/**/*.sql` — patch، deploy، tenant merge، settings/const، ensure/alter +- در صورت نیاز برای اجرای همان SQL: فقط به‌روزرسانی توضیحات داخل همان `.sql` (هدر/کامنت) + +## ممنوع (do not edit) + +- `app/**` — Controllers، Models، Services، `MigrateCommand`، Providers، Jobs، … +- `routes/**`, `config/**`, `packages/**`, `resources/**`, `bootstrap/**`, `public/**`, `tests/**` +- `database/migrations/**` (PHP) — مگر کاربر صریحاً migration بخواهد +- `database/schema/mysql-schema.sql.reference` — dump مخرب با `DROP TABLE`؛ روی DB موجود اجرا/بازنویسی نکن +- `.env`, `composer.json`, `composer.lock`, Docker، اسکریپت‌های root ops +- بازنویسی `value` (و ترجیحاً `is_active`) ردیف‌های موجود settings یا const در SQLهای deploy + +اگر کار فقط با تغییر PHP حل می‌شود: **رد کن**، راه SQL پیشنهاد بده، یا بپرس آیا مجاز به لمس کد هستی. + +## قرارداد SQL + +- Idempotent بنویس (قابل اجرای چندباره). +- **حفظ value:** در `deploy_settings_const*.sql` و هر patch جدید، برای ردیف موجود **هرگز** `UPDATE value` نزن. فقط INSERT کلید جدید با default؛ آپدیت فقط روی `title_fa` / `description` / `type` / `can_edit`. ترجیح آپگرید زنده: `deploy_settings_const_preserve_value_sync_can_edit.sql`. +- Schema جدول/ستون را در settings SQL نگذار؛ برای ستون جدید از الگوی `database/sql/_helpers/safe_add_column.sql` / `ensure_*.sql` / `deploy_safe_schema.sql` پیروی کن. +- نام‌گذاری: `add_*`, `alter_*`, `ensure_*`, `*_patch.sql`, `{tenant}_*`, `deploy_settings_const*.sql`. +- قبل از پیشنهاد اجرا روی سرور: بکاپ؛ ترتیب DB موجود معمولاً: `baseline_migrations.sql` → `php artisan migrate` → `deploy_settings_const*.sql` (جزئیات: `database/sql/DEPLOY_CHECKLIST.md`). + +## ایمنی migrate + +- `app/Console/MigrateCommand.php` از auto-load اسکیما جلوگیری می‌کند — آن را لمس/حذف نکن. +- روی DB موجود هرگز `mysql-schema.sql.reference` را پیشنهاد نکن. + +## مثال + +```text +❌ کاربر: «فلگ X را در SettingsController چک کن» → فایل PHP را ادیت نکن؛ در صورت نیاز کلید را در SQL settings اضافه کن. +❌ SQL: UPDATE settings SET value = 'false' WHERE key = 'referral_show'; — value زنده را عوض نکن. +✅ کاربر: «کلید support_messengers را به deploy settings اضافه کن» → فقط database/sql/*.sql با INSERT WHERE NOT EXISTS. +✅ SQL: UPDATE settings SET title_fa = '...', description = '...' WHERE key = 'referral_id'; — فقط متادیتا. +``` diff --git a/app/Services/ConfigService.php b/app/Services/ConfigService.php index 8c92b71..ac748ff 100644 --- a/app/Services/ConfigService.php +++ b/app/Services/ConfigService.php @@ -72,11 +72,21 @@ class ConfigService return $this->getBool('is_store', false); } - /** کد معرف در ثبت‌نام اجباری است (تنظیم referral_id = required) */ - public function isReferralRequired(): bool - { - return strtolower(trim($this->getString('referral_id'))) === 'required'; - } + /** کد معرف در ثبت‌نام اجباری است (referral_id = required) — فقط وقتی فیلد نمایش داده شود */ + public function isReferralRequired(): bool + { + if (! $this->getBool('referral_show', true)) { + return false; + } + + return strtolower(trim($this->getString('referral_id'))) === 'required'; + } + + /** فیلد کد معرف در صفحه ثبت‌نام اپ کاربر نمایش داده شود */ + public function isReferralFieldVisible(): bool + { + return $this->getBool('referral_show', true); + } public function getInt(string $key, int $default = 0): int { diff --git a/database/sql/add_referral_show_setting.sql b/database/sql/add_referral_show_setting.sql new file mode 100644 index 0000000..f668a74 --- /dev/null +++ b/database/sql/add_referral_show_setting.sql @@ -0,0 +1,42 @@ +-- ============================================================================= +-- add_referral_show_setting.sql +-- کلید نمایش/عدم‌نمایش فیلد «کد معرف» در ثبت‌نام اپ کاربر +-- کنار referral_id (کد معرف اجباری) در گروه «معرف و پاداش» پنل ادمین +-- +-- اجرا (DB موجود): +-- mysql ... < database/sql/add_referral_show_setting.sql +-- یا با deploy کامل: +-- mysql ... < database/sql/deploy_settings_const.sql +-- ============================================================================= + +START TRANSACTION; + +SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci; + +INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) +SELECT + 'referral_show', + 'true', + 'نمایش فیلد کد معرف', + 1, + 1, + 'روشن: فیلد کد معرف در صفحه ثبت‌نام اپ کاربر نمایش داده می‌شود. خاموش: فیلد مخفی است (لینک دعوت با ?id= همچنان اعمال می‌شود). اگر خاموش است، «کد معرف اجباری» را هم خاموش کنید مگر بخواهید فقط از لینک دعوت ثبت‌نام شود.', + 'switch' +WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'referral_show' LIMIT 1); + +UPDATE `settings` +SET + `type` = 'switch', + `title_fa` = 'نمایش فیلد کد معرف', + `can_edit` = 1, + `description` = 'روشن: فیلد کد معرف در صفحه ثبت‌نام اپ کاربر نمایش داده می‌شود. خاموش: فیلد مخفی است (لینک دعوت با ?id= همچنان اعمال می‌شود). اگر خاموش است، «کد معرف اجباری» را هم خاموش کنید مگر بخواهید فقط از لینک دعوت ثبت‌نام شود.' +WHERE `key` = 'referral_show'; + +UPDATE `settings` +SET + `description` = 'روشن: وارد کردن کد معرف در ثبت‌نام اجباری است. خاموش: کد معرف اختیاری است. اگر «نمایش فیلد کد معرف» خاموش باشد، اجباری بودن اعمال نمی‌شود.' +WHERE `key` = 'referral_id'; + +COMMIT; + +SELECT 'add_referral_show_setting.sql finished' AS status; diff --git a/database/sql/deploy_settings_const.sql b/database/sql/deploy_settings_const.sql index 406ee2d..2e7dcfe 100644 --- a/database/sql/deploy_settings_const.sql +++ b/database/sql/deploy_settings_const.sql @@ -921,6 +921,12 @@ INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `de SELECT 'referral_id', 'required', 'کد معرف اجباری', 1, 1, 'روشن = اجباری در ثبت‌نام | خاموش = اختیاری', 'switch' WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'referral_id' LIMIT 1); +INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) +SELECT 'referral_show', 'true', 'نمایش فیلد کد معرف', 1, 1, + 'روشن: فیلد کد معرف در صفحه ثبت‌نام اپ کاربر نمایش داده می‌شود. خاموش: فیلد مخفی است (لینک دعوت با ?id= همچنان اعمال می‌شود).', + 'switch' +WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'referral_show' LIMIT 1); + -- fee_single حذف شد — اختلاف فقط buy_fee / sell_fee (خالی = صفر) INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) @@ -1114,6 +1120,7 @@ UPDATE `settings` SET `type` = 'longtext' WHERE `key` IN ( UPDATE `settings` SET `type` = 'select', `description` = 'none,pargar,tahesab,zarin' WHERE `key` = 'accounting_provider'; UPDATE `settings` SET `type` = 'select', `description` = 'منبع فعال قیمت|montzar,zaarbox,main_product' WHERE `key` = 'price_provider'; UPDATE `settings` SET `type` = 'switch', `title_fa` = 'کد معرف اجباری', `description` = 'روشن = اجباری در ثبت‌نام | خاموش = اختیاری' WHERE `key` = 'referral_id'; +UPDATE `settings` SET `type` = 'switch', `title_fa` = 'نمایش فیلد کد معرف', `description` = 'روشن: فیلد کد معرف در صفحه ثبت‌نام اپ کاربر نمایش داده می‌شود. خاموش: فیلد مخفی است (لینک دعوت با ?id= همچنان اعمال می‌شود).' WHERE `key` = 'referral_show'; UPDATE `settings` SET `type` = 'select', `description` = 'sepal,' WHERE `key` = 'payping_gateway_name'; UPDATE `settings` SET `type` = 'select', `description` = 'bale,telegram,whatsapp,rubika,eitaa,soroush' WHERE `key` = 'support_messenger'; @@ -1121,6 +1128,7 @@ UPDATE `settings` SET `type` = 'select', `description` = 'bale,telegram,whatsapp UPDATE `settings` SET `type` = 'switch' WHERE `key` IN ( 'chart_use_local_data', 'jibit_enabled', 'jibit_verification', 'register_jibit_verify', 'open_register', 'auto_active_customer', + 'referral_show', 'close_price', 'show_last_price', 'show_gold_ounce_price', 'show_home_price_when_closed', 'show_product_details', 'show_product_trade_status', 'show_product_card_meta', 'products_site_link_enabled', @@ -1327,6 +1335,12 @@ UPDATE `settings` SET `description` = 'روشن = اجباری در ثبت‌نام | خاموش = اختیاری' WHERE `key` = 'referral_id'; +UPDATE `settings` SET + `type` = 'switch', + `title_fa` = 'نمایش فیلد کد معرف', + `description` = 'روشن: فیلد کد معرف در صفحه ثبت‌نام اپ کاربر نمایش داده می‌شود. خاموش: فیلد مخفی است (لینک دعوت با ?id= همچنان اعمال می‌شود).' +WHERE `key` = 'referral_show'; + UPDATE `settings` SET `type` = 'switch' WHERE `key` IN ('register_referral_sms_to_referrer', 'register_referral_bonus_message', 'referral_gift_on_first_order', 'referral_gift_buy_from_montzar'); @@ -1509,7 +1523,8 @@ UPDATE `settings` SET `description` = 'تنظیم legacy — از price_provider UPDATE `settings` SET `description` = 'متن کامل قوانین و مقررات استفاده از اپ که در صفحه قوانین به کاربر نشان داده می‌شود. HTML ساده مجاز است.' WHERE `key` = 'text_rule'; UPDATE `settings` SET `description` = 'متن «درباره ما» شامل معرفی مجموعه، راه‌های ارتباطی و توضیح خدمات. در صفحه مربوطه در اپ کاربر نمایش داده می‌شود.' WHERE `key` = 'text_about'; -UPDATE `settings` SET `description` = 'روشن: وارد کردن کد معرف در ثبت‌نام اجباری است. خاموش: کد معرف اختیاری است.' WHERE `key` = 'referral_id'; +UPDATE `settings` SET `description` = 'روشن: وارد کردن کد معرف در ثبت‌نام اجباری است. خاموش: کد معرف اختیاری است. اگر «نمایش فیلد کد معرف» خاموش باشد، اجباری بودن اعمال نمی‌شود.' WHERE `key` = 'referral_id'; +UPDATE `settings` SET `description` = 'روشن: فیلد کد معرف در صفحه ثبت‌نام اپ کاربر نمایش داده می‌شود. خاموش: فیلد مخفی است (لینک دعوت با ?id= همچنان اعمال می‌شود). اگر خاموش است و اجباری روشن باشد، فقط ثبت‌نام از لینک دعوت ممکن است.' WHERE `key` = 'referral_show'; UPDATE `settings` SET `description` = 'مقدار پاداش (گرم) به کیف معرف. ۰ = بدون پاداش. زمان واریز بسته به «پاداش معرف پس از اولین سفارش» است. خرید پوشش از همکار با کلید «خرید پاداش معرفی از همکار» کنترل می‌شود.' WHERE `key` = 'gift_for_referrer'; UPDATE `settings` SET `description` = 'مقدار پاداش (گرم) به معرف‌شونده. ۰ = بدون پاداش. زمان واریز بسته به «پاداش معرف پس از اولین سفارش» است. خرید پوشش از همکار با کلید «خرید پاداش معرفی از همکار» کنترل می‌شود.' WHERE `key` = 'gift_for_referral'; UPDATE `settings` SET `description` = 'روشن: پس از ثبت‌نام کاربر جدید، پیامک اطلاع‌رسانی برای معرف ارسال می‌شود.' WHERE `key` = 'register_referral_sms_to_referrer'; @@ -1818,6 +1833,7 @@ UPDATE `settings` SET `title_fa` = 'API سود طلا' WHERE `key` = 'profit_gol UPDATE `settings` SET `title_fa` = 'مقدار پاداش معرف' WHERE `key` = 'referral_bonus_amount'; UPDATE `settings` SET `title_fa` = 'تعداد معرف برای هدیه' WHERE `key` = 'referral_count_for_gift'; UPDATE `settings` SET `title_fa` = 'کد معرف اجباری' WHERE `key` = 'referral_id'; +UPDATE `settings` SET `title_fa` = 'نمایش فیلد کد معرف' WHERE `key` = 'referral_show'; UPDATE `settings` SET `title_fa` = 'محدودیت دعوت' WHERE `key` = 'referral_limit'; UPDATE `settings` SET `title_fa` = 'تأیید کدملی/موبایل در ثبت‌نام' WHERE `key` = 'register_jibit_verify'; UPDATE `settings` SET `title_fa` = 'پیام پاداش در SMS ثبت‌نام' WHERE `key` = 'register_referral_bonus_message'; @@ -1949,7 +1965,7 @@ UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( 'montzar_mobile', 'montzar_open_buy', 'montzar_open_sell', 'montzar_password', 'montzar_product_id', 'open_register', - 'referral_id', 'referral_limit', 'referral_gift_on_first_order', 'referral_gift_buy_from_montzar', + 'referral_id', 'referral_show', 'referral_limit', 'referral_gift_on_first_order', 'referral_gift_buy_from_montzar', 'register_jibit_verify', 'register_referral_bonus_message', 'register_referral_sms_to_referrer', 'sell_fee', 'show_last_price', 'show_home_price_when_closed', 'show_gold_ounce_price', 'show_product_details', 'show_product_trade_status', 'show_product_card_meta', diff --git a/database/sql/deploy_settings_const_preserve_value_sync_can_edit.sql b/database/sql/deploy_settings_const_preserve_value_sync_can_edit.sql index 3e45fd4..019815a 100644 --- a/database/sql/deploy_settings_const_preserve_value_sync_can_edit.sql +++ b/database/sql/deploy_settings_const_preserve_value_sync_can_edit.sql @@ -685,6 +685,12 @@ INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `de SELECT 'referral_id', 'required', 'کد معرف اجباری', 1, 1, 'روشن = اجباری در ثبت‌نام | خاموش = اختیاری', 'switch' WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'referral_id' LIMIT 1); +INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) +SELECT 'referral_show', 'true', 'نمایش فیلد کد معرف', 1, 1, + 'روشن: فیلد کد معرف در صفحه ثبت‌نام اپ کاربر نمایش داده می‌شود. خاموش: فیلد مخفی است (لینک دعوت با ?id= همچنان اعمال می‌شود).', + 'switch' +WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'referral_show' LIMIT 1); + -- fee_single حذف شد — اختلاف فقط buy_fee / sell_fee (خالی = صفر) INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) @@ -876,6 +882,7 @@ UPDATE `settings` SET `type` = 'longtext' WHERE `key` IN ('text_rule', 'text_abo -- select (+ گزینه‌ها در description) UPDATE `settings` SET `type` = 'select', `description` = 'منبع فعال قیمت|montzar,zaarbox,main_product' WHERE `key` = 'price_provider'; UPDATE `settings` SET `type` = 'switch', `title_fa` = 'کد معرف اجباری', `description` = 'روشن = اجباری در ثبت‌نام | خاموش = اختیاری' WHERE `key` = 'referral_id'; +UPDATE `settings` SET `type` = 'switch', `title_fa` = 'نمایش فیلد کد معرف', `description` = 'روشن: فیلد کد معرف در صفحه ثبت‌نام اپ کاربر نمایش داده می‌شود. خاموش: فیلد مخفی است (لینک دعوت با ?id= همچنان اعمال می‌شود).' WHERE `key` = 'referral_show'; UPDATE `settings` SET `type` = 'select', `description` = 'sepal,' WHERE `key` = 'payping_gateway_name'; UPDATE `settings` SET `type` = 'select', `description` = 'bale,telegram,whatsapp,rubika,eitaa,soroush' WHERE `key` = 'support_messenger'; @@ -883,6 +890,7 @@ UPDATE `settings` SET `type` = 'select', `description` = 'bale,telegram,whatsapp UPDATE `settings` SET `type` = 'switch' WHERE `key` IN ( 'chart_use_local_data', 'jibit_enabled', 'jibit_verification', 'register_jibit_verify', 'open_register', 'auto_active_customer', + 'referral_show', 'close_price', 'show_last_price', 'show_home_price_when_closed', 'show_product_details', 'show_product_trade_status', 'show_product_card_meta', 'products_site_link_enabled', @@ -1070,6 +1078,12 @@ UPDATE `settings` SET `description` = 'روشن = اجباری در ثبت‌نام | خاموش = اختیاری' WHERE `key` = 'referral_id'; +UPDATE `settings` SET + `type` = 'switch', + `title_fa` = 'نمایش فیلد کد معرف', + `description` = 'روشن: فیلد کد معرف در صفحه ثبت‌نام اپ کاربر نمایش داده می‌شود. خاموش: فیلد مخفی است (لینک دعوت با ?id= همچنان اعمال می‌شود).' +WHERE `key` = 'referral_show'; + UPDATE `settings` SET `type` = 'switch' WHERE `key` IN ('register_referral_sms_to_referrer', 'register_referral_bonus_message', 'referral_gift_on_first_order', 'referral_gift_buy_from_montzar'); @@ -1286,7 +1300,8 @@ UPDATE `settings` SET `description` = 'تنظیم legacy — از price_provider UPDATE `settings` SET `description` = 'متن کامل قوانین و مقررات استفاده از اپ که در صفحه قوانین به کاربر نشان داده می‌شود. HTML ساده مجاز است.' WHERE `key` = 'text_rule'; UPDATE `settings` SET `description` = 'متن «درباره ما» شامل معرفی مجموعه، راه‌های ارتباطی و توضیح خدمات. در صفحه مربوطه در اپ کاربر نمایش داده می‌شود.' WHERE `key` = 'text_about'; -UPDATE `settings` SET `description` = 'روشن: وارد کردن کد معرف در ثبت‌نام اجباری است. خاموش: کد معرف اختیاری است.' WHERE `key` = 'referral_id'; +UPDATE `settings` SET `description` = 'روشن: وارد کردن کد معرف در ثبت‌نام اجباری است. خاموش: کد معرف اختیاری است. اگر «نمایش فیلد کد معرف» خاموش باشد، اجباری بودن اعمال نمی‌شود.' WHERE `key` = 'referral_id'; +UPDATE `settings` SET `description` = 'روشن: فیلد کد معرف در صفحه ثبت‌نام اپ کاربر نمایش داده می‌شود. خاموش: فیلد مخفی است (لینک دعوت با ?id= همچنان اعمال می‌شود). اگر خاموش است و اجباری روشن باشد، فقط ثبت‌نام از لینک دعوت ممکن است.' WHERE `key` = 'referral_show'; UPDATE `settings` SET `description` = 'مقدار پاداش (گرم) به کیف معرف. ۰ = بدون پاداش. زمان واریز بسته به «پاداش معرف پس از اولین سفارش» است. خرید پوشش از همکار با کلید «خرید پاداش معرفی از همکار» کنترل می‌شود.' WHERE `key` = 'gift_for_referrer'; UPDATE `settings` SET `description` = 'مقدار پاداش (گرم) به معرف‌شونده. ۰ = بدون پاداش. زمان واریز بسته به «پاداش معرف پس از اولین سفارش» است. خرید پوشش از همکار با کلید «خرید پاداش معرفی از همکار» کنترل می‌شود.' WHERE `key` = 'gift_for_referral'; UPDATE `settings` SET `description` = 'روشن: پس از ثبت‌نام کاربر جدید، پیامک اطلاع‌رسانی برای معرف ارسال می‌شود.' WHERE `key` = 'register_referral_sms_to_referrer'; @@ -1496,7 +1511,7 @@ UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( 'montzar_mobile', 'montzar_open_buy', 'montzar_open_sell', 'montzar_password', 'montzar_product_id', 'open_register', - 'referral_id', 'referral_limit', 'referral_gift_on_first_order', 'referral_gift_buy_from_montzar', + 'referral_id', 'referral_show', 'referral_limit', 'referral_gift_on_first_order', 'referral_gift_buy_from_montzar', 'register_jibit_verify', 'register_referral_bonus_message', 'register_referral_sms_to_referrer', 'sell_fee', 'show_last_price', 'show_home_price_when_closed', 'show_product_details', 'show_product_trade_status', 'show_product_card_meta',